C++ zadacic

poruka: 58
|
čitano: 6.801
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
C++ zadacic

Molim vas da mi netko rijesi ovaj zadatak. Ja sam jos pocetnik, pa imam problema.

 

Zadatak glasi:

 

Napisite program koji ucitava 10 brojeva , te ispisuje

 

  a) 2. najmanji broj;

  b) 3. najmanji broj.

 

Trebam to rijesiti koristeci petlje, bez arraya i slicnih stvari. Hvala!

 

 

 

 
0 0 hvala 0
17 godina
offline
C++ zadacic

Najmanji broj možeš dobiti tako da u svakom prolazu petlje provjeriš je li upisani < najmanjeg. U prvom prolazu (ili prije petlje, pa petlju skrati za jedan prolaz) ćeš postaviti upisani = najmanji.

 

Sad bi trebalo biti jednostavno dokučiti kako dobiti 2. i 3. najmanji, a ako nije, javi gdje si zapela!

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
15 godina
neaktivan
offline
RE: C++ zadacic

Znam napisat program za ispisivanje najmanjeg broja, to mi nije problem, ali ne znam kako napisati kod za 2. i 3. najmanji broj. Ne znam kako memorirati taj broj.

17 godina
offline
C++ zadacic

Imat ćeš još dvije varijable: npr. int prvi, drugi, treci.

 

Kad naiđeš na broj manji od "prvi": treci = drugi, drugi = prvi, prvi = novi.

 

Ako ne, ako broj manji od "drugi": treci = drugi, drugi = novi.

 

Ako ne, ako broj manji od "treci": treci = novi.

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
15 godina
neaktivan
offline
RE: C++ zadacic

To mi se onda cini da tu ima i pet novih varijabli.

 

Ma sad sam se skroz zapetljala!

 

 

 

 

 

 

#include<iostream>
using namespace std;

int main()
{
    int prvi, drugi, treci,novi;
    cout<<"Upisite 10 brojeva"<<endl;
    cin>>prvi;

    for (int i=2;i<10;i++)
    {  
       cin>> drugi;
       if ( drugi<prvi)
      { 

           treci=drugi;
          drugi=prvi;
        prvi=novi;
     }

........... NE KUZIM VISE NISTA! :-(

15 godina
neaktivan
offline
RE: C++ zadacic

Moze mi tko pomoci, molim vas!

17 godina
protjeran
offline
C++ zadacic

Probaj ovako

 

#include <iostream>
using namespace std;

int main(){
    int min1, min2, min3, pom;

    cout << "Unesi 1. broj: ";
    cin >> min1;

    cout << "Unesi 2. broj: ";
    cin >> pom;
    if(pom < min1){
       min2 = min1;
       min1 = pom;
    }
    else
       min2 = pom;

    cout << "Unesi 3. broj: ";
    cin >> pom;
    if(pom < min1){
       min3 = min2;
       min2 = min1;
       min1 = pom;
    }
    else
       if(pom > min1 && pom < min2){
          min3 =  min2;
          min2 = pom;
       }
       else
          min3 = pom;

    for(int i = 4; i <= 10; i++){
    cout << "Unesi " << i << ".broj: ";
    cin >> pom;
    if(pom < min1){
       min3 = min2;
       min2 = min1;
       min1 = pom;
    }
    else
       if(pom > min1 && pom < min2){
          min3 =  min2;
          min2 = pom;
       }
       else
          if(pom < min3)
             min3 = pom;
    }
    cout << "Drugi najmanji: " << min2 << endl;
    cout << "Treci najmanji: " << min3 << endl;
    return 0;
}

Moj PC  
2 0 hvala 2
17 godina
offline
C++ zadacic

#include <iostream>
using namespace std;

int main()
{
    int prvi, drugi, treci, novi;
    cout << "Upisite 10 brojeva:" << endl;

    // posluzit cu se prljavim trikom
    // i postaviti veliku vrijednost
    // u gornje varijable

    // bolja ideja bi bila:
    // prve 3 vrijednosti izvan petlje svrstati


    prvi = drugi = treci = 1000000;

    for (int i = 0; i < 10; i++)
    {
       cin >> novi;
       if (novi < prvi)
       {
           treci = drugi;
           drugi = prvi;
           prvi  = novi;
       }
       else if (novi < drugi)
       {
           treci = drugi;
           drugi = novi;
       }
       else if (novi < treci)
       {
           treci = novi;
       }
    }

    cout << "3 najmanja: "
       << prvi << ", "
       << drugi << ", "
       << treci << endl;
}

 

Ako želiš bez prljavog trika, a zapneš u doumljivanju rješenja, javi! :)

 

 

edit: pretekoše me Tracer! :D

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
Poruka je uređivana zadnji put pon 18.1.2010 14:09 (itf4n).
 
2 0 hvala 2
17 godina
offline
C++ zadacic

malo ti je nezgodno bez polja, jer moras usporediti svaku varijablu sa svakom!

pretekli me...

:-(

Poruka je uređivana zadnji put pon 18.1.2010 14:28 (sasa).
Moj PC  
0 0 hvala 0
16 godina
offline
C++ zadacic

Ma napraviš 10 varijabli i svaki sa svakim uspoređuješCool.

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
C++ zadacic

Mislim da rjesenje ide ovako:

Kod ne radi i ima veliki ERROR Ako neradi, javi pa da ga testam (napiso sam ga na mobu)

 

EDIT:

 

Tocno rjesen zadatk je ovaj:

 

#include <stdio.h>
#include <conio.h>
main ()
{
     int i,a,min,min1,min2;
     printf("Upisi 10 brojeva");
     for (i=1;i<=10;i++)
     {
         scanf("%d",&a);
         if(a<min) min=a;
         if(a<min1) min1=a;
         if(a<min2 && a>min1) min2=a;
     }
      printf("drugi najmanji je %d , a treci najmanji je %d",min1,min2);
      getch();
}
    


Marko
Poruka je uređivana zadnji put pon 18.1.2010 17:37 (midzan21).
Moj PC  
0 0 hvala 0
17 godina
protjeran
offline
RE: C++ zadacic

To nikako nije točno rješenje. Već na prvi pogled vidim tri moguće greške.

16 godina
neaktivan
offline
C++ zadacic

to je tocno. Provjeri u dev-c++ u

Marko
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
C++ zadacic

Niti ja se ne slažem.

"Tako je" - povikase seljaci i slozno glavama razbise zid
 
0 0 hvala 0
17 godina
protjeran
offline
RE: C++ zadacic

Ne treba mi ništa da vidim da je to krivo. Prvo, nisi napravio početnu inicijalizaciju varijabli min1,min2 i min3 tj. njihove početne vrijednosti su nepoznate, a zatim ih dolje uspoređuješ u for petlji. Drugo, min i min2 će uvijek biti jednaki a to nema smisla. Treće: program će svakako dati krivi rezlutat na različitim permutacijama brojeva. Npr. pokušaj unijeti sve brojeve od 10 do 1 pa će vidjeti da program krivo radi.

16 godina
offline
RE: C++ zadacic
Tracer kaže...

Ne treba mi ništa da vidim da je to krivo. Prvo, nisi napravio početnu inicijalizaciju varijabli min1,min2 i min3 tj. njihove početne vrijednosti su nepoznate, a zatim ih dolje uspoređuješ u for petlji. Drugo, min i min2 će uvijek biti jednaki a to nema smisla. Treće: program će svakako dati krivi rezlutat na različitim permutacijama brojeva. Npr. pokušaj unijeti sve brojeve od 10 do 1 pa će vidjeti da program krivo radi.

Dobro si napisal program i točno da rješenja,ali se odmah ugasi,pa u redak prije return0 treba dodati  :  system("PAUSE");  da sistem ponudi da se pritisne tipka pa da se nastavi.

 

AMD
16 godina
neaktivan
offline
C++ zadacic
mi tako radimo u skoli. Zadatak je rijesen uspjesno. Cak je i profa rekla da je to najbolje rjesenje.
Marko
Moj PC  
0 0 hvala 0
17 godina
protjeran
offline
RE: C++ zadacic
midzan21 kaže...
mi tako radimo u skoli. Zadatak je rijesen uspjesno. Cak je i profa rekla da je to najbolje rjesenje.

To profa sigurno nije rekao za ovo tvoje rješenje. Već sam ti rekao, pokušaj unijeti sve brojeve od 10 do 1 i vidjeti ćeš da nije dobro.

17 godina
offline
C++ zadacic

Kako će to biti rješenje kad ima if(a<min), a min nije inicijaliziran, uspoređuje sa nepostojećom vrijednosti

ne kužim

 
0 0 hvala 0
16 godina
neaktivan
offline
C++ zadacic
zadatak je TESTIRAN I RADI. Provjerili smo sve moguce kombinacije (random brojevi, od 1 do 10 i od 10 do 1)
Marko
Moj PC  
0 0 hvala 0
17 godina
protjeran
offline
RE: C++ zadacic
midzan21 kaže...
zadatak je TESTIRAN I RADI. Provjerili smo sve moguce kombinacije (random brojevi, od 1 do 10 i od 10 do 1)

Ajme meni... odustajem.

17 godina
neaktivan
offline
RE: C++ zadacic
emerik kaže...
Tracer kaže...

..

Dobro si napisal program i točno da rješenja,ali se odmah ugasi,pa u redak prije return0 treba dodati  :  system("PAUSE");  da sistem ponudi da se pritisne tipka pa da se nastavi.

 

Ne treba dodati jer imaš getch(); koji zaustavi tijek izvođenja i čeka unos znaka.

midzan21 kaže...
mi tako radimo u skoli. Zadatak je rijesen uspjesno. Cak je i profa rekla da je to najbolje rjesenje.

Onda profa nema pojma drugim riječima, nhf. Evo sad sam ti i iskompajliral program (sa gccom), dev koristi minigw ako se ne varam koji je dio gcca za izradu win32 aplikacija.

 

Rezultat? Za unos - 1, 2, 3, 4, 5, 6, 7, 8, 8, 9 dobije se drugi najmanji je 1, a treći se dobije smeće neko. Čudim se još kak se segmentation fault ne dobi.

"Tako je" - povikase seljaci i slozno glavama razbise zid
17 godina
protjeran
offline
C++ zadacic

Komentar je suvišan...

Poruka je uređivana zadnji put pon 18.1.2010 19:31 (Tracer).
Moj PC  
3 0 hvala 0
16 godina
neaktivan
offline
C++ zadacic
mi min NIKAD ne inicijaliziramo. Tako ce min AUTOMATSKI poprimiti taj broj koji mu se daje.
Marko
Moj PC  
0 0 hvala 0
16 godina
offline
RE: C++ zadacic

Njegov program je valjda rađen za C,a ne C++.Program ionak ne radi.

AMD
16 godina
neaktivan
offline
C++ zadacic
napomena: testirano je devom i BORLANDOVIM c-om. U devu je profa postavio kao default kompajler gcc ili tako nekako a ne mingw (dev je v4 BEZ mingw-a)
Marko
Moj PC  
0 0 hvala 0
17 godina
offline
C++ zadacic

MS compiler ga odbija

Borlandov prima, a za drugi najmanji stavlja najmanji u nizu, za treći najmanji stavlja drugi najmanji

takve sam rezultate ja dobio

 
2 0 hvala 0
16 godina
neaktivan
offline
C++ zadacic
radjen je za c++. Radi u devu v4 bez mingwa (gcc kompajler je defaultni) i borland c++-u (tamo je defaultni kompajler mingw)
Marko
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
RE: C++ zadacic
midzan21 kaže...
napomena: testirano je devom i BORLANDOVIM c-om. U devu je profa postavio kao default kompajler gcc ili tako nekako a ne mingw (dev je v4 BEZ mingw-a)

Da, a ja sam ti napisal šta? Da sam ga iskompajliral gccom možda? Kakvim god C-om, C++-om, neće šljakat. Ako ne vjeruješ g. Traceru, čiju knjigu upravo imam ispred sebe, na strani 117. (Dinamička alokacija i realokacija memorije), bar bi trebo mom iskompajliranom kodu. A ja čak i više vjerujem g. Traceru nego svom iskompajliranom kodu. Jer čovjek zna, puno više nego ti, ja ili čak bi se usudio reč bilo tko na ovom forumu.

"Tako je" - povikase seljaci i slozno glavama razbise zid
17 godina
offline
RE: C++ zadacic
midzan21 kaže...
radjen je za c++. Radi u devu v4 bez mingwa (gcc kompajler je defaultni) i borland c++-u (tamo je defaultni kompajler mingw)

ok, ali kako tumačiš to da uspoređuješ inicijaliziranu varijablu sa neinicijaliziranom

to ne kužim kako radi

Nova poruka
E-mail:
Lozinka:
 
vrh stranice