začiatočnícky priklad z jazyka C
vstup - zadaj 3 reálne čisla
výstup - najväčšie z nich je: ...
mam dve riešenia ktoré sú rovnaké len inak sú napísane. Ktoré z nich by ste si vybrali a prečo ? (jedno z nich som napísal ja :-))
(vyjadrite sa len ty ktorý tomu rozumiete)
riešenie 1 #include <stdio.h>
int main()
{
double x, y, z, max;
printf("Zadajte 3 cisla:\n");
scanf("%lf%lf%lf", &x, &y, &z);
if (x > y) {
if (x > z)
max = x;
else
max = z;
}
else {
if (y < z)
max = z;
else
max = y;
}
printf("najvatsie cislo je: %.2lf", max);
return 0;
} riešenie 2 #include <stdio.h>
int main()
{
double x, y, z, max;
printf("Zadajte 3 cisla:\n");
scanf("%lf%lf%lf", &x, &y, &z);
if (x > y && x > z)
max = x;
else
if (y > x && y > z)
max = y;
else
if (z > x && z > y)
max = z;
printf("najvatsie cislo je: %.2lf", max);
return 0;
}
Pre pridávanie komentárov sa musíte prihlásiť.

tommq: Druhé, ale bez tej pravopisnej chyby. Prečo? Už na prvý pohľad je to kratšie, prehľadnejšie a zrozumiteľnejšie.
#include <stdio.h> #include <stdlib.h> int main() { double x, y, z, max; printf("Zadajte 3 cisla:\n"); if(fscanf(stdin,"%lf%lf%lf",&x,&y,&z)!=3){ printf("Mal si zadat tri cisla, ty pnak!\n"); return 1; } max=x; max=max>y?max:y; max=max>z?max:z; printf("Najvacsie cislo je: %g\n", max); return 0; }Uzivatelia su prasata, preto treba davat pozor pri kazdom vstupe. A taktiez, treba sa snazit co najmenej komplikovat podmienky a vnarat sa. Vzdy, ked sa riesi nejaka uloha, ktora spracovava nejaky vstup, treba si polozit otazku: Kolko prace by znamenalo, keby odrazu nebolo vstupov N, ale dvakrat tolko. Idealne je, ak staci prepisat konstantu, co ani jedno z povodnych rieseni nesplnalo.Proste, treba sa snazit udrziavat kod co najjednoduchsi.
#include <stdio.h> #include <stdarg.h> double maximum(const int p,...) { int i=-1; double v,m; va_list vl; va_start(vl,p); while((++i)^p){ v=va_arg(vl,double); m=i?(m<v?v:m):v; } va_end(vl); return m; } int main() { double x, y, z, max; printf("Zadajte 3 cisla:\n"); if(fscanf(stdin,"%lf%lf%lf",&x,&y,&z)!=3){ fprintf(stderr,"Mal si zadat tri cisla, ty pnak!\n"); return 1; } printf("Najvacsie cislo je: %g\n", maximum(3,x,y,z)); return 0; }Viem, že je to veľmi stará diskusia, ale nedá mi neukázať začiatočnícký spôsob:
#include <stdio>
int main(void)
{
double a, b, c;
printf("Zadajte 3 cisla:\n");
scanf("%lf%lf%lf",&a,&b,&c);
printf("Najvacsie cislo je: %lg\n", (a > b && a > c) ? a : (b > a && b > c) ? b : c);
return 0;
}
a zajtra ti povedia, ze tych cisel bude 1000000. preto jednoznacne pole...
Vychádzal som zo zadania v prvom príspevku, ale pole tiež nie je problém. ;-)
Navyše som rád, že som to tu našiel, zaujala ma knižnica stdarg.h, ešte som s ňou nerobil.
Samuel - to si robíš srandu? Takto by si to učil? A potom ako by si riešil zápis a čítanie do/zo súboru?
Mimochodom na stredných školách sa učí prevažne Pascal
Neviem ako vám, ale mne správne nefunguje táto časť kódu:
printf("Zadajte 3 cisla:\n"); if(fscanf(stdin,"%lf%lf%lf",&x,&y,&z)!=3){ printf("Mal si zadat tri cisla, ty pnak!\n"); return 1;</pre>
Malo by mi to vyhubovať keď zadám iný počet čísiel, ale nepracuje to tak. Hľadal som na nete nejakú radu, ale nenašiel som nič.
oprav na:
if(fscanf(stdin,"%lf %lf %lf",&x,&y,&z)!=3){Ale to nič nerieši. Skús zadať 4 čísla oddelené medzerou v jednom riadku.