Author's photo
Anonymný autor
programovacie jazyky C

zoradenie čísel v c programe

dobrý večer,
je tu niekto prosim, kto by mi vedel pomoct s ulohou v programe c , ktorý načíta tri čísla a vypíše ich od najväčšieho po najmenšie? neviem si rady s tym porovnanim. kde robim chybu?
#include<stdio.h>
int main(){
int x, y, z;
printf("zadaj tri hodnoty:");
scanf("%d %d %d", &x, &y,&z);
if( (x>y) && (y>z) && (z>x)){
printf("%d, %d, %d", x, y, z \n);
}
return 0;
}

2 odpovede
Ahoj,

Nie som nejaký C expert, ale z poskytnutého kódu dokážem povedať, že porovnávacia if je nelogická, okrem toho máš aj chybu v printf, \n sa má nachádzať vo vnútri stringu.

Príklad riešenia:
#include <stdio.h>

int main() {
int x, y, z, temp;

printf("Zadaj tri hodnoty: ");
scanf("%d %d %d", &x, &y, &z);

if (x < y) {
temp = x;
x = y;
y = temp;
}
if (x < z) {
temp = x;
x = z;
z = temp;
}
if (y < z) {
temp = y;
y = z;
z = temp;
}

printf("Hodnoty zoradené od najväčšieho po najmenšie: %d, %d, %d\n", x, y, z);

return 0;
}

Snáď ti to pomôže!

S pozdravom,
Adrián
Komentáre:
Anonymný autor
dakujem pekne za pomoc exituje aj riesenie bez pomoci funkcie temp? tu sme sa este v skole neucili.
Adrián J.
Ahoj, prepáč, ale všimol som si tvoju odpoveď dosť neskoro - neprišla mi notifikácia, divné. Samozrejme, môžeš to urobiť aj takto: https://pastebin.com/985uiyfL. S pozdravom, Adrián
avatar
Zmazaný účet
#include <stdio.h>

int main() {
int x, y, z;

printf("Zadaj tri hodnoty: ");
scanf("%d %d %d", &x, &y, &z);

if (x >= y && x >= z) {
if (y >= z) {
printf("%d, %d, %d\n", x, y, z);
} else {
printf("%d, %d, %d\n", x, z, y);
}
} else if (y >= x && y >= z) {
if (x >= z) {
printf("%d, %d, %d\n", y, x, z);
} else {
printf("%d, %d, %d\n", y, z, x);
}
} else {
if (x >= y) {
printf("%d, %d, %d\n", z, x, y);
} else {
printf("%d, %d, %d\n", z, y, x);
}
}

return 0;
}