Diskuze: Seřazení čísel podle velikosti Dev-C++
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
#include <stdio.h>
#include <stdlib.h>
int main(){
float a;
float b;
float c;
float d;
printf("prvni cislo:\n");
scanf("%f", &a);
printf("druhecislo:\n");
scanf("%f", &b);
printf("treti cislo:\n");
scanf("%f", &c);
printf("ctvrte cislo:\n");
scanf("%f", &d);
if(a>b && a>c && a>d) {printf("nejvetsi cislo je:%1.f\n",a);}
if(b>a && b>c && b>d) {printf("nejvetsi cislo je:%1.f\n",b);}
if(c>a && c>b && c>d) {printf("nejvetsi cislo je:%1.f\n",c);}
if(d>a && d>b && d>c) {printf("nejvetsi cislo je:%1.f\n",d);}
printf("\n");
if(a<b && a<c && a<d) {printf("nejmensi cislo je:%1.f\n",a);}
if(b<a && b<c && b<d) {printf("nejmensi cislo je:%1.f\n",b);}
if(c<a && c<b && b<d) {printf("nejmensi cislo je:%1.f\n",c);}
if(d<a && d<b && d<c) {printf("nejmensi cislo je:%1.f\n",d);}
system("pause");
}
Kdyby ti je nedali, tak by nebylo poznat, že to je špatně. Má tam být else.
Funčknost to plní. Pokud vím, větev else je nepovinná. Tak jsem to bohužel dal všechno pomocí IF. Sorry, že jsem chtěl pomoc..
Jde o to, že takhle to testuješ, i když jsi to číslo dávno našel => plýtváš výkonem.
Nejde o to, že jsi chtěl pomoct, ale že jsi pomohl špatně. Pokud programátor takhle na začátku své ("působnosti"), narazí na takto špatný návyk, tak odvyknout si od něj pak může být už nemožné.
Dobrý programátor zná tři čísla: 0, 1 a ∞ (nekonečno). První dvě řeší podmínkou, zbývající cyklem nebo rekurzí.
Docela mě zaráží, že sis jako začátečník vybral zrovna C++. Co takhle začít s něčím jednodušším, pro výuku vhodnějším?
Nahraď if za else if, kromě toho prvního
if. Schválně si to zkus v debugu jaký je to rozdíl. Je to základní
konstrukce, takže bys jí měl ovládat na 100%
Jinak zde je takový mix algoritmu zvavého Selection Sort. Měl by být docela lehký na pochopení. Asi ještě neumíš pole a cykly, takže: pole je řada několika prvků za sebou uložených v paměti, cyklus za tebe opakuje dané instrukce kolikrát požaduješ.
using std::cout;
using std::endl;
const int length = 10;
int arr[length] = {2,6,5,7,8,6,2,3,4,8};
for (int i = 0; i < length; i++)
{
for(int j = i; j < length; j++)
{
if(arr[i] > arr[j])
{
int rand = arr[i];
arr[i] = arr[j];
arr[j] = rand;
}
}
cout << arr[i] << endl;
}
}
Pokud bys chtěl více čísel vypisovat vzestupně/sestupně, tak jen pomocí if-else daleko nedojdeš.
Doporučuju si pročíst místní tutorialy, podívat se co je to Pole a jak
se s ním pracuje (je to nejvíce powerfull věc pro začátek ) a pak si najdi třeba BubbleSort,
nebo nějaký podobný primitivní (třídící) algoritmus - který by jsi
mimochodem měl umět z paměti i o půlnoci, jestli chceš programovat. =)
Tady je tutorial z C (základ je stejný) - Pole:
http://www.itnetwork.cz/…ole-tutorial
A tady jsou k tomu taky cykly, bez kterých se neobejdeš:
http://www.itnetwork.cz/…torial-cykly
Zkoušej a ono to časem půjde. Když se pak naučíš úplné základy, tak programování začne
být sranda. Je to jako učit se číst..
Zobrazeno 17 zpráv z 17.