Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Seřazení čísel podle velikosti Dev-C++

Aktivity
Avatar
sNN_
Člen
Avatar
sNN_:26.9.2013 19:42

Zdravím,
jsem uplny začátečník v programování (cca 2 týdny). V rámci začátků jsem se rozhodl, že si zkusím naprogramovat program, který mi po zapsání tří čísel vypsal čísla vzestupně tak jak po sobě jdou.

int main(int argc, char*argv[])
{
 int a, b, c;
 printf("Zadej tri cisla: ");
 scanf("%d%d%d", &a,&b,&c);

  if(a > b) {
  if(a > c)
    printf("nejvetsi je %d\n", a);
  else
    printf("nejvetsi je %d\n", c);
  }
  if(b > c) {
  printf("druhe je %d\n", b);
}
  system("PAUSE");
  return 0;

Toto je zatím program na vypsání jen největšího čísla. Byl bych moc vděčný, kdyby mi někdo tento program napsal a já bych se na něj mohl podívat a pochopit jak byl napsán. Jen kdyby to šlo pouze za použití podmínek if-else, jelikož jsem se zatím dál nedostal :/ :D
DIKY MOC!

 
Odpovědět
26.9.2013 19:42
Avatar
Kamil
Člen
Avatar
Odpovídá na sNN_
Kamil:26.9.2013 20:21
#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");

}
 
Nahoru Odpovědět
26.9.2013 20:21
Avatar
Odpovídá na Kamil
Martin Bednář (xbedm01):26.9.2013 20:26

else ti nic neříká?

Nahoru Odpovědět
26.9.2013 20:26
I bez motta se dá žít
Avatar
Kamil
Člen
Avatar
Kamil:26.9.2013 20:26

Tak kolik palců dolu ještě? člověk se snaží pomoc a hned -2.

 
Nahoru Odpovědět
26.9.2013 20:26
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kamil
David Hartinger:26.9.2013 20:29

Kdyby ti je nedali, tak by nebylo poznat, že to je špatně. Má tam být else.

Nahoru Odpovědět
26.9.2013 20:29
You are the greatest project you will ever work on.
Avatar
Kamil
Člen
Avatar
Odpovídá na David Hartinger
Kamil:26.9.2013 20:31

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

 
Nahoru Odpovědět
26.9.2013 20:31
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Kamil
Jan Vargovský:26.9.2013 20:32

Jde o to, že takhle to testuješ, i když jsi to číslo dávno našel => plýtváš výkonem.

 
Nahoru Odpovědět
26.9.2013 20:32
Avatar
Kamil
Člen
Avatar
Odpovídá na Jan Vargovský
Kamil:26.9.2013 20:33

Ok, dobře..

 
Nahoru Odpovědět
26.9.2013 20:33
Avatar
Odpovídá na Kamil
Vojtěch Pospíchal:26.9.2013 20:38

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

 
Nahoru Odpovědět
26.9.2013 20:38
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Kamil
Kit:26.9.2013 20:47

Dobrý programátor zná tři čísla: 0, 1 a ∞ (nekonečno). První dvě řeší podmínkou, zbývající cyklem nebo rekurzí.

Editováno 26.9.2013 20:48
Nahoru Odpovědět
26.9.2013 20:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
sNN_
Člen
Avatar
sNN_:26.9.2013 20:49

Může sem teda někdo napsat "programátorsky" správnej kód? Díky moc

 
Nahoru Odpovědět
26.9.2013 20:49
Avatar
Kit
Tvůrce
Avatar
Odpovídá na sNN_
Kit:26.9.2013 21:01

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?

Nahoru Odpovědět
26.9.2013 21:01
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
sNN_
Člen
Avatar
sNN_:26.9.2013 21:04

Nevybral jsem si to sám, začali jsme to ve škole, jen jsem nepochytil začátek a tak se to teď snažím doučit zpětně..

 
Nahoru Odpovědět
26.9.2013 21:04
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na sNN_
Jan Vargovský:26.9.2013 21:11

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% :)

Editováno 26.9.2013 21:11
 
Nahoru Odpovědět
26.9.2013 21:11
Avatar
sNN_
Člen
Avatar
sNN_:26.9.2013 21:21

Ok díky :)

 
Nahoru Odpovědět
26.9.2013 21:21
Avatar
Odpovídá na sNN_
Michael Olšavský:26.9.2013 21:31

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;
        }
}
 
Nahoru Odpovědět
26.9.2013 21:31
Avatar
Martin Gabriel
Tvůrce
Avatar
Martin Gabriel:26.9.2013 21:48

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.. ;)

Editováno 26.9.2013 21:48
Nahoru Odpovědět
26.9.2013 21:48
"Be the change you want to see in the world" - Michael Scofield
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.