Diskuze: Triangle validity test in C
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.


Segmenation fault ti nastáva pretože sa snažíš zapisovať do pola pre ktoré nemáš alokovanú pamäť, preto ju treba alokovať dynamicky.
Pridaj knižnicu
#include <stdlib.h>
Namiesto
float trojuhelnik[pocet_trojuhelniku][3];
daj
float **trojuhelnik;
Následne pred for-om v ktorom ideš načítavať jednotlivé strany trojuholníka (ak "check" je 1) si alokuj potrebnú pamäť
trojuhelnik = (float**)malloc(pocet_trojuhelniku * sizeof(float*));
for (i = 0; i < pocet_trojuhelniku; i++) {
trojuhelnik[i] = (float*)malloc(POCET_STRAN_TROJUHOLNIKA * sizeof(float));
}
Po tomto už môžeš klasicky pracovať s "trojuhelnik" ako s dvojrozmerným polom.
Nakoniec keď už nebudeš "trojuhelnik" používať alebo pred ukončením programu uvolni alokovanú pamäť presne opačným spôsobom ako pri alokovaní
for (i = 0; i < pocet_trojuhelniku; i++) {
free(trojuhelnik[i]);
}
free(trojuhelnik);
int pocet_trojuhelniku;
char letter_check;
do {
printf("Please enter the number of triangles to check: ");
scanf("%d", &pocet_trojuhelniku);
letter_check = getchar();
if (letter_check != '\n'){
printf("Invalid number of triangles.\n");
while (getchar() != '\n');
continue;
}
if ((pocet_trojuhelniku < 1) || (pocet_trojuhelniku > UCHAR_MAX)) {
printf("Invalid number of triangles.\n");
}
} while ((pocet_trojuhelniku < 1) || (pocet_trojuhelniku > UCHAR_MAX) || (letter_check != '\n'));
Ještě pár tipů:
// Ladeni
#define DEBUG 1
// Strukturova sablona
struct sTriangle {
float a;
float b;
float c;
};
// Promenne
int i;
int pocet_trojuhelniku;
struct sTriangle *triangle = NULL;
// Alokace pameti pro pole struktur
triangle = (struct sTriangle *)malloc(pocet_trojuhelniku * sizeof(struct sTriangle));
if (!triangle) {
printf("Chyba alokace pameti.\n");
exit(1);
}
// kontrolni vypis mnozstvi alokovane pameti
#if(DEBUG)
printf("Mnozstvi alokovane pameti: %d bytu\n\n", pocet_trojuhelniku * sizeof(struct sTriangle));
#endif
// Nacteni stran trojuhleniku
for (i = 0; i < pocet_trojuhelniku; i++) {
printf("Zadej 1. stranu %d. trojuhelnika: ", i + 1);
scanf("%f", &((triangle + i)->a));
printf("Zadej 2. stranu %d. trojuhelnika: ", i + 1);
scanf("%f", &((triangle + i)->b));
printf("Zadej 3. stranu %d. trojuhelnika: ", i + 1);
scanf("%f", &((triangle + i)->c));
printf("\n");
}
// kontrolni vypis trojuhelniku
#if(DEBUG)
for (i = 0; i < pocet_trojuhelniku; i++) {
printf("%d. trojuhelnik: %f %f %f\n", i + 1, (triangle+i)->a, (triangle + i)->b, (triangle + i)->c);
}
printf("\n");
#endif
// uvolneni pameti
free(triangle);
triangle = NULL;
Kód neobsahuje ošetření vstupů
Zobrazeno 4 zpráv z 4.