Program - problem z porównywaniem wartości

0

Witam, mam pewien problem nie mogę ogarnąć tego zagadnienia. Nie wiem jak porównać 5 wartości i odrzucić 2 najmniejsze z nich. Znajdzie się ktoś chętny do pomocy ?
zamieszczam moje wypociny :

/*---------------------------------------------

Podczas zawodów skoków narciarskich zawodnik otrzymuje oceny za styl od 5 sędziów.
Ostateczna ocena za styl jest równa sumie tych trzech, 
które pozostaną po odrzuceniu skrajnych not. Napisz program,
który wczyta 5 liczb z zakresu od 0 do 20, a następnie wyliczy ocenę za styl
zgodnie z podanymi wyżej zasadami.
----------------------------------------------*/
#include <iostream.h>
main()
{
int nota1=0, nota2=0, nota3=0, nota4=0, nota5=0;
int wchodzi1=0, wchodzi2=0, wchodzi3=0; 

// Powitanie programu
cout << "------------------------------------------------\n";
cout << "\t\tSKOKI NARCIARSKIE" << endl;
cout << "------------------------------------------------\n";

// 1 Nota zawodnika. Nie moze byc wieksza od 20 !
cout << "Podaj 1 note dla zawodnika: ";
cin  >> nota1;
     while (nota1>20)
{
                  cout << "Maksymalna nota to 20! Podaj nowa note zawodnika: ";
                  cin  >> nota1;  }                 
// 2 Nota zawodnika. Nie moze byc wieksza od 20 !
cout << "Podaj 2 note dla zawodnika: ";
cin  >> nota2;
     while (nota2>20)
{
                  cout << "Maksymalna nota to 20! Podaj nowa note zawodnika: ";
                  cin  >> nota2;  }     
// 3 Nota zawodnika. Nie moze byc wieksza od 20 !
cout << "Podaj 3 note dla zawodnika: ";
cin  >> nota3;
     while (nota3>20)
{
                  cout << "Maksymalna nota to 20! Podaj nowa note zawodnika: ";
                  cin  >> nota3;  }     
// 4 Nota zawodnika. Nie moze byc wieksza od 20 !
cout << "Podaj 4 note dla zawodnika: ";
cin  >> nota4;
     while (nota4>20)
{
                  cout << "Maksymalna nota to 20! Podaj nowa note zawodnika: ";
                  cin  >> nota4;  }     
// 5 Nota zawodnika. Nie moze byc wieksza od 20 !
cout << "Podaj 5 note dla zawodnika: ";
cin  >> nota5;
     while (nota5>20)
{
                  cout << "Maksymalna nota to 20! Podaj nowa note zawodnika: ";
                  cin  >> nota5;  }     

// Porownanie liczb, ma na celu wylonienie 3 najwiekszych

if(nota1<nota2) { wchodzi1=nota2;}
else if(nota1<nota3) { wchodzi1=nota3; }
else if(nota1<nota4) { wchodzi1=nota4; }
else if(nota1<nota5) { wchodzi1=nota5; }

if(nota2<nota1) { wchodzi2=nota1;}
else if(nota2<nota3) { wchodzi2=nota3; }
else if(nota2<nota4) { wchodzi2=nota4; }
else if(nota2<nota5) { wchodzi2=nota5; }

if(nota3<nota1) { wchodzi3=nota1;}
else if(nota3<nota2) { wchodzi3=nota2; }
else if(nota3<nota4) { wchodzi3=nota4; }
else if(nota3<nota5) { wchodzi3=nota5; }


 cout << ". " << wchodzi1<< ". " << wchodzi2<< ". " << wchodzi3 << endl;


system ("PAUSE");
return 0;
 }
 

Z góry wam dziękuję za wskazówki ;)

0

Lepiej byłoby wczytać noty do tablicy, posortować (załóżmy że rosnąco i bazując an tym założeniu), odrzucić dwa pierwsze elementy tablicy.
Zdaje się że w STL'u masz wszystko potrzebne, czyli sort, a do przechowywania not możesz użyć np. vector.

0

Źle zrozumiałeś zadanie. Masz odrzucić dwie skrajne noty, tzn. największą i najmniejszą.

0

A tak, skoki narciarskie. Dalej podobna technika - sortowanie i odrzucanie skrajnych elementów tablicy.

0

Dziekuje za szybka odpowiedz , faktycznie to mi ulatwi dalsza prace ;) pozdrawiam, wielkie dzieki

0
  1. "Nie istnieje" biblioteka iostream.h !!!
  2. Używa się using namespace std; lub std:: !!!
  3. Przy main powinno być int (ale nie koniecznie)
  4. Rób entery i spacje, bo kod bardzo nie czytelny !!!
  5. Nie potrzebujesz {} przy jednej instrukcji
  6. Po co inicjalizujesz nota... a potem do nich przypisujesz wartości ?!
0

odrzucanie skrajnych elementów tablicy
nie musi być nawet żadnego faktycznego „odrzucania”: gdy mamy posortowaną tablicę o indeksach od [0] do [4], wyświetlamy noty od [1] do [3], i z nich wyciągamy ewentualną średnią.

0

Dzieki waszej pomocy wszystko pieknie dziala ;) wrzucam caly program. Moze sie jeszcze komus przydac.

 
#include <iostream>
using namespace std;
int main()
{

int tab1 [ 5 ];
int sumanoty;



// Powitanie programu
   cout << "------------------------------------------------\n"
        << "\t\tSKOKI NARCIARSKIE" << endl
        << "------------------------------------------------\n";


// 1 Nota zawodnika. Nie moze byc wieksza od 20 !
   cout << "Podaj 1 note dla zawodnika: ";
   cin  >> tab1 [0];
        while ( tab1 [0] > 20 )
{
                  cout << "Maksymalna nota to 20! Podaj nowa note zawodnika: ";
                  cin  >> tab1 [0];  }                 


// 2 Nota zawodnika. Nie moze byc wieksza od 20 !
   cout << "Podaj 2 note dla zawodnika: ";
   cin  >> tab1 [1];
        while ( tab1 [1] > 20 )
{
                  cout << "Maksymalna nota to 20! Podaj nowa note zawodnika: ";
                  cin  >> tab1 [1];  }     


// 3 Nota zawodnika. Nie moze byc wieksza od 20 !
   cout << "Podaj 3 note dla zawodnika: ";
   cin  >> tab1 [2];
         while ( tab1 [2] > 20 )
{
                  cout << "Maksymalna nota to 20! Podaj nowa note zawodnika: ";
                  cin  >> tab1 [2];  }     


// 4 Nota zawodnika. Nie moze byc wieksza od 20 !
   cout << "Podaj 4 note dla zawodnika: ";
   cin  >> tab1 [3];
         while ( tab1 [3] > 20 )
{
                  cout << "Maksymalna nota to 20! Podaj nowa note zawodnika: ";
                  cin  >>  tab1 [3];  }     


// 5 Nota zawodnika. Nie moze byc wieksza od 20 !
   cout << "Podaj 5 note dla zawodnika: ";
   cin  >> tab1 [4];
        while ( tab1 [4] > 20 )
{
                  cout << "Maksymalna nota to 20! Podaj nowa note zawodnika: ";
                  cin  >> tab1 [4];  }     



// sortowanie tablicy liczb, ma na celu wylonienie 3 najwiekszych
sort( tab1, tab1 + 5 );
sumanoty = tab1 [1] + tab1 [2] + tab1 [3];
         
         cout << "Noty za styl zawodnika: " << sumanoty << endl;



system ("PAUSE");
return 0;
 }
0

Trochę się przyczepię. Komentarz jest mylący

// sortowanie tablicy liczb, ma na celu wylonienie 3 najwiekszych

Korzystasz potem z trzech "środkowych", a nie z trzech największych.
Czy noty mogą być ujemne?

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