Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
↑ Windik:
No ja neviem, či úplne chápem :)
Čo myslíš ukončením cyklu:
* podmienku, ktorá ho ukončí
* príkaz, ktorý sa vykoná po jeho uknočení
Myslíš niečo takéto?
char c; while(c != '\n') { c = getchar(); printf("%c", c); } printf("%c", c);
Predovšetkým, by ma zaujímalo čo si predstavuješ pod pojmami, "prázdny riadok" a "enter" (:
Offline
mno mam takovou funkci:
char *pole_c;
int *pole;
char vstup;
char pole_char[10];
int a=0;
void ctiPole(void){
//malloc(pocet_rad *sizeof(int));
//malloc(vstup *sizeof(int));
pole_c = (char*) realloc (pole_c, pocet_chl * sizeof(int));
printf("Zadejte hraci plochu:\n");
while(vstup!=EOF){
vstup=scanf("%s", pole_c);
pole_char[a]=pole_c[pocet_chl];
pocet_chl++;
a++;
free(pole_c);
}};
ctiPole();
musim zadat serii znaku dam enter a zadam dalsi serii znaku a takhle muzu do nekonecna. ukoncit tenhle cyklus bych chtel tak ze nezadam zadny znak a pouze to odentruju, vim ze tam hraje nejakou ulohu EOF , ale jsem uz z toho zoufalý a fakt nevim kde je zakopany pes
Offline
Príkazom break; to určite pôjde. Skús ho pridať na koniec podmienky while, prípadne vlož na koniec if, keď sa budem rovnať tvoj znak medzerníkú, prázdnemu riadku tak sa vykoná break;
Niečo takéto asi:
if(vstup = "\n")
break;
Nie som si istý presne ako to má byť.
Offline
↑ Windik:
EOF ti je v tom prípade na nič, keďže to doslova znamená "Koniec súboru". Na štandardnom vstupe sa EOF simuluje klávesami CTRL+D(Unix systémy) alebo CTRL+Z(Windowsy), jeho hodnota býva väčšinou -1, takže pozor do čoho EOF čítam.
Práca s globálnymi premennými, je nebezpečná a veľa ľuďí ju odsudzuje.
Funkcia scanf(), vracia počet *úspešne* načítaných argumentov. A EOF v prípade chyby.
Deklarácia neinicializovanou premennou možná až od C99.
Stredník t.j. ';' sa za implemantáciou funkcie nedáva.
Realloc() by sa mala používať na pred tým alokované premenné pomocou malloc() resp. calloc()
Tak narýchlo napísane, by to možno mohlo byť nejak takto?
Funkcia by mala načítať do pola znaky a vrátiť počet, v prípade chyby vráti -1.
int nacitajPole(char* pole, size_t velkost) { char znak = 0; unsigned int i = 0; while(znak != '\n') { znak = getchar(); if(znak == '\n') { pole[i++] = znak; znak = getchar(); continue; } if(i == velkost) { velkost = strlen(pole)+100; char* temp = NULL; if( (temp = (char*)realloc(pole, velkost*sizeof(char))) == NULL ) return -1; pole = temp; } pole[i++] = znak; } return i; }
Offline
↑ hradecek:
Díky moc kámo , mrknu na to , sice už jsem z programování prolít, ale alespoň se to naučím :)
Offline
Stránky: 1