[c++] największa z 3 liczb wystukanych z klawiatury

0

Witam,
jestem początkujący w programowaniu(dopiero się ucze) :)

Pisze sobie taki skrypcik

#include <iostream.h>
#include <conio.h>
using namespace std;
main()
{
int a,b,c;
cout<<"Podaj pierwsza liczbe: ";
cin>>a;
cout<<"Podaj druga liczbe: ";
cin>>b;
cout<<"Podaj trzecia liczbe: ";
cin>>c;

if (a>b || a>c)
{
    cout<<a<<" jest najwieksza"<<endl;
}
else if (b>a || b>c)
{
    cout<<b<<" jest najwieksza"<<endl;
}
else
{
    cout<<c<<" jest najwieksza"<<endl;
}
getch();
return 0;
}

Jak zrobić, żeby sprawdzało czy liczba 3 jest największa czy nie.
Program tylko sprawdza i wyswietla a ib jeśli np. podam a=2 b=5 c=8 to wyświetli, że 5 jest największe dlaczego nie bierze pod uwagę c?

Jak to zrobić?

Pozdrawiam

PS. Jaką książkę polecacie dla początkującego ?

0

(a && b) < c

I radzę Ci pomyśleć nad zoptymalizowaniem tego kodu z użyciem pętli ;)

0

Pętli while czy do while ?

Chyba while no nie?

0

Można tak (nie optymalnie ) :

#include <iostream>

using namespace std;
int main()
{
    const char* ktora[] ={"pierwsza" ,"druga","trzecia"};
    double liczby[3]; 
    double max ;
    
  for (int i = 0 ; i < 3 ; i++)
  {
  cout << "Podaj " << ktora[i] << " liczbe : ";
  cin  >> liczby[i] ;  
  if (i == 0 )  max = liczby[i] ; 
  else if (max < liczby[i]) max = liczby[i];
  }
  
  cout << max << " jest najwieksza . ";

    system("PAUSE");
    return EXIT_SUCCESS;
}

lub tak :


#include <iostream>

using namespace std;

int main()
{
    const char* ktora[] ={"druga","trzecia"};
    double max ,liczba;
    
      cout << "Podaj pierwsza liczbe : ";
      cin  >> max ;
      
  for (int i = 0 ; i < 2 ; i++)
   {
    cout << "Podaj " << ktora[i] << " liczbe : ";
    cin >> liczba ;
    if (max < liczba) max = liczba;
   }
  cout << max << " jest najwieksza . ";

    system("PAUSE");
    return EXIT_SUCCESS;
}

jednak należy pamiętać że w tym przypadku taka "optymalizacja" nie ma sensu i zaciemnia kod :D

i jescze uwaga :
Dołączanie <conio.h> dla samego getch() to zbrodnia.

lepiej użyć :

system("PAUSE");

lub

cin.ignore();
cin.get() ;
0

można jeszcze wzbogacić do n liczb:

cin>>liloscliczb;

while(iloscliczb--)
{
//...
}
0

Wydaje mi się, że jedyny problem polega na tym, że używasz alternatywy zamiast koniunkcji. W ifach zmień || na && i powinno banglać.

Do wszystkich pozostałych: już Was ponosi - optymalizacja, dodatkowa funkcjonalność... Autor chciał tylko wiedzieć, dlaczego mu nie działa :P Czasami najprostsze odpowiedzi są najlepsze.

0

brodny dziekuje pomogło i zgadzam się z tobą :)

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1