Matematické Fórum

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

#1 03. 12. 2012 10:09

Windik
Zelenáč
Příspěvky: 11
Reputace:   
Web
 

jak ukoncit cyklus prazdnym radkem a entrem

nevíte nekdo prosím jak ukončit cyklus prázdným řádkem a entrem please please :)

Offline

  • (téma jako vyřešené označil(a) Windik)

#2 03. 12. 2012 15:41

ado130
Příspěvky: 86
Škola: FEKT VUT
Pozice: Študent
Reputace:   
 

Re: jak ukoncit cyklus prazdnym radkem a entrem

Programovací jazyk?


Quidquid latine dictum sit, altum videtur.

Offline

 

#3 03. 12. 2012 17:29

Windik
Zelenáč
Příspěvky: 11
Reputace:   
Web
 

Re: jak ukoncit cyklus prazdnym radkem a entrem

je na to hlavni jsem zapomnel, v cecku  ↑ ado130:

Offline

 

#4 03. 12. 2012 20:03 — Editoval hradecek (03. 12. 2012 20:05)

hradecek
Příspěvky: 772
Pozice: Student
Reputace:   25 
Web
 

Re: jak ukoncit cyklus prazdnym radkem a entrem

↑ 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?

Code:

    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" (:


Netrápte sa nad svojimi problémami s matematikou, môžem vás uistiť, že tie moje sú ešte väčšie. ~~Albert Einstein~~
Jak spozná člověk, že není pitomec ? - Moudrý člověk to nepozná nikdy a blbci je to jedno. ~~Jak přicházejí básnici o iluze~~
Někteří lidi se nikdy nezmění. Anebo se rychle změní a pak se zase rychle změní nazpátek. ~~Homer Simpson~~

Offline

 

#5 04. 12. 2012 07:35

Windik
Zelenáč
Příspěvky: 11
Reputace:   
Web
 

Re: jak ukoncit cyklus prazdnym radkem a entrem

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

 

#6 04. 12. 2012 17:58

ado130
Příspěvky: 86
Škola: FEKT VUT
Pozice: Študent
Reputace:   
 

Re: jak ukoncit cyklus prazdnym radkem a entrem

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ť.


Quidquid latine dictum sit, altum videtur.

Offline

 

#7 04. 12. 2012 23:15 — Editoval hradecek (04. 12. 2012 23:20)

hradecek
Příspěvky: 772
Pozice: Student
Reputace:   25 
Web
 

Re: jak ukoncit cyklus prazdnym radkem a entrem

↑ 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.

Code:

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;
}

Netrápte sa nad svojimi problémami s matematikou, môžem vás uistiť, že tie moje sú ešte väčšie. ~~Albert Einstein~~
Jak spozná člověk, že není pitomec ? - Moudrý člověk to nepozná nikdy a blbci je to jedno. ~~Jak přicházejí básnici o iluze~~
Někteří lidi se nikdy nezmění. Anebo se rychle změní a pak se zase rychle změní nazpátek. ~~Homer Simpson~~

Offline

 

#8 19. 12. 2012 14:34

Windik
Zelenáč
Příspěvky: 11
Reputace:   
Web
 

Re: jak ukoncit cyklus prazdnym radkem a entrem

↑ hradecek:
Díky moc kámo , mrknu na to , sice už jsem  z programování prolít, ale alespoň se to naučím :)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson