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
DObrý den, tento program je skoro přepsaný z knihy Keningham a Ritchie - Programovací jazyk C, nicméně mi dokola vypisuje stejně nesmyslné hodnoty. Měl by vypsat nejdelší řádek a jeho délku a vypíše nějaká divná písmena a délku 6. Nemohl by se na to někdo podívat a napsat, v čem by mohla být chyba?vstup ukončuji zavináčem. Moc děkuji
#include <stdio.h>
#define MAX 1000
int main (void)
{
int r, max;
char br[MAX], mr[MAX];
max=0;
while ((r=getline(br, MAX))>0)
if(r>max)
{
max=r;
copy(br, mr);
}
if (max>0)
printf("Nejdelsi radek je %s, jeho delka je %i", mr, max);
}
getline (s,n) /*nacte radek a vrati jeho delku*/
int n;
char s[];
{
int i,c;
for(i=0; i<n-1 & (c=getchar()) != '@' && (c=getchar()) != '\n'; ++i)
{
s[i]=c;
}
if (c=='\n')
{
s[i]=c;
++i;
}
s[i]='\0';
return (i);
}
copy(s1,s2)
char s1[], s2[];
{
int i;
i=0;
while((s1[i]=s2[i]) != '\0')
++i;
}
Offline

Tady na tomhle radku:
for(i=0; i<n-1 & (c=getchar()) != '@' && (c=getchar()) != '\n'; ++i)
Volas dvakrat gunkci getchar, takze to nacte dva znaky najednou, pri tom druhem porovnani bys tam mela pouzit akorat samotne c. Potom tam mas &, ale predpokladam, ze by to melobyt spis &&, coz muze delat problemy (tuhle chybu sam delam casto :-) )
Ten radek by mel podle me vypadat spis takhle:
for(i=0; i<n-1 && (c=getchar()) != '@' && c != '\n'; ++i)
Potom jeste jak mas:
copy(br, mr);
Tak tim to kopirujes z pole mr do br, ale predtim to nacitas do br a pak vypisujes mr, takze opacne by to melo by ok:
copy(mr, br);
No tak to kdyztak muzes vyzkouset a napsat, jestli to alespon castecne pomohlo :-)
Offline
↑ Lumikodlak:
Bezva, děkuju moc, už to šlape. To mě teda vůbec nenapadlo, že to vlastně getchar volám dvakrát.
A s tím kopírováním polí jsem si chtěla dát velkej pozor, abych kopírovala správnej do správnýho,ale nevyšlo to. Moc děkuju
Offline