Zadanie C++. Menu z wyborem fukcji

0

Witajcie

Mam do napisania program w c++, jako że juz brakuje mi pomysłu jak połoczyć wszystko aby działało Bardzo bym prosił o to was. W program mam wpisywać cztery zmienne, następnie ma mi się otworzyć menu z wyborem:
1.Wskazania największej liczby
2.Najmniejszej liczby
3.Ma policzyc Srednią
4.Policzyć działanie (a+b+c+d)/4

  1. Policzyć średnią ważoną
  2. Zakończyć program

Program ma działać dopoki nie wcisnę zakoncz

W programie maja być użyte fukcje switch, for, dauble, for, while.

Nie mogą być gotowe funkcje liczące.

Liczę że ktoś mi pomoże ewentualnie wskaże drogę, kazda moja proba sklejania kodów z neta kończy się serią błedów.

`#include <iostream>
#include <conio.h>

using namespace std;
int a;
int b;
int c;
int d;
int wybor;
int ilosc_ocen=4;

int main()
{

 cout<<""<<endl;
cout<<"Podaj a: ";
cin>>a;
cout<<"Podaj b: ";
cin>>b;
cout<<"Podaj c: ";
cin>>c;
cout<<"Podaj d: ";
cin>>d;

cout<<"MENU"<<endl;
cout<<"1.MAX"<<endl;
cout<<"2.MIN"<<endl;
cout<<"3.Srednia"<<endl;
cout<<"4.(a+b)/(c+d)"<<endl;
cout<<"5.Srednia wazona"<<endl;
cout<<"6.Zakoncz program"<<endl;
cout<<"Wybierz opcje: "<<endl;`
1

kończy się serią błedów.

1. Poki co są to, jak widzę, błędy kompilacji. Brakuje jakiegokolwiek zakończenia programu, czyli zakończenia funkcji main().
2. Brakuje też ogólnie instrukcji switch(), która stanowiłaby menu.
3. Nie wiem czym różni się działanie z punktu 4. Policzyć działanie (a+b+c+d)/4 od punktu 3. Ma policzyc Srednią.
4. W poleceniu masz dokładnie podane rzeczy, których masz użyć. Wystarczy otworzyć dowolny kurs omawiający pętle i wykorzystać je zgodnie z tutorialem. Podstawy widzę już masz ;)

1
#include <iostream>

using namespace std;

int max(int oceny[], int ilosc_ocen)
{
    int max = oceny[0];
    for (unsigned int i = 1; i < ilosc_ocen; ++i)
        if (max < oceny[i])
            max = oceny[i];
    return max;
}

int min(int oceny[], int ilosc_ocen)
{
    int min = oceny[0];
    for (unsigned int i = 1; i < ilosc_ocen; ++i)
        if (min > oceny[i])
            min = oceny[i];
    return min;
}

float srednia(int oceny[], int ilosc_ocen)
{
    float srednia = 0;
    for (unsigned int i = 0; i < ilosc_ocen; ++i)
        srednia = srednia + oceny[i];
    return (srednia / ilosc_ocen);
}

float f1(int oceny[])
{
    float gora = (oceny[0] + oceny[1]);
    float dol = (oceny[2] + oceny[3]);
    return gora / dol;
}

int main()
{
    int a;
    int b;
    int c;
    int d;
    int wybor;
    const int ilosc_ocen = 4;
    int oceny[ilosc_ocen];

    cout << "Podaj a: ";
    cin >> a;
    oceny[0] = a; //dodaje ocene

    cout << "Podaj b: ";
    cin >> b;
    oceny[1] = b; //dodaje ocene

    cout << "Podaj c: ";
    cin >> c;
    oceny[2] = c; //dodaje ocene

    cout << "Podaj d: ";
    cin >> d;
    oceny[3] = d; //dodaje ocene

    while(true)
    {
        cout << "\nMENU" << endl;
        cout << "1.MAX" << endl;
        cout << "2.MIN" << endl;
        cout << "3.Srednia" << endl;
        cout << "4.(a+b)/(c+d)" << endl;
        cout << "5.Srednia wazona" << endl;
        cout << "6.Zakoncz program" << endl;
        cout << "Wybierz opcje: " << endl;
        cin >> wybor;
        cout << endl;

        switch (wybor)
        {
        case 1:
            cout << "Najwyzsza ocena to: " << max(oceny, ilosc_ocen) << endl;
            break;
        case 2:
            cout << "Najnizsza ocena to: " << min(oceny, ilosc_ocen) << endl;
            break;
        case 3:
            cout << "Srednia ocen to: " << srednia(oceny, ilosc_ocen) << endl;
            break;
        case 4:
            cout << "(a+b)/(c+d): " << f1(oceny) << endl;
            break;
        case 5:
            cout << "Brak." << endl;
            break;
        case 6:
            return 0;
            break;
        default:
            cout << "Nie ma takiej opcji" << endl;
            break;
        }
    }
    return 0;
}
0

@@tomcze15 Dzięki, ja też coś nabazgrałem w miedzy czasie. Jak dodać do tego srednią ważoną ?

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

{

int a, b, c,d,sr;
int max, min;
int x;
int wybor;

cout << "Podaj pierwsza liczbe: ";
cin >> a;
cout << "Podaj druga liczbe: ";
cin >> b;
cout << "Podaj trzecia liczbe: ";
cin >> c;
cout<<"Podaj czwarta liczbe: ";
cin>>d;

cout<<"MENU"<<endl;
cout<<"1.MAX"<<endl;
cout<<"2.MIN"<<endl;
cout<<"3.Srednia"<<endl;
cout<<"4.(a+b)/(c+d)"<<endl;
cout<<"5.Srednia wazona"<<endl;
cout<<"6.Zakoncz program"<<endl;
cout<<"Wybierz opcje: "<<endl;
cin>>wybor;

if (a > b)
x = a; else x = b;
if (x > c)
max = x; else max = c;
if (d>max)
max=d;

if (a < b)
x = a; else x = b;
if (x < c)
min = x; else min = c;
if (d<min)
min=d;

switch(wybor)
{
case 1:
cout << "Najwieksza liczba jest liczba "<< max << endl;
break;

    case 2:
    cout << "Najmniejsza liczba jest liczba "<< min << endl;   
    break;

}    

}```

0

Jest na to mnóstwo sposobów. Twój program jest bardzo prosty, więc zrobiłbym to w najprostszy sposób. Ustalił bym z góry wagi tych ocen. Chodzi mi o to, że jak użytkownik poda ocenę 'a' to wiem, że ona ma wagę np. 3, jak poda ocenę 'b' wiem, że ma wagę 1 itd. I umieścił bym to wszystko w funkcji.

float sredniaWazona(int oceny[]) 
{
    //ocena[0] waga: 3
    //ocena[1] waga: 1
    //ocena[2] waga: 4
    //ocena[3] waga: 2
    float gora = oceny[0] * 3 + oceny[1] * 1 + oceny[2] * 4 + oceny[3] * 2;
    float dol = 10; //Suma wag ocen
    return gora / dol;
}
0

Czy mogłbym was prosić o wklejenie tego kodu programu:
Tylko chciałbym zeby liczby zczytywało mi z int a,b,c,d czyli tych co podałem w swoim kodzie

int main()
{
    int ilosc_ocen=0, oceny=0, suma_ects=0;
    double srednia=0.0, suma=0.0;

    cout << "Witaj, powiedz z ilu ocen chcesz liczyc srednia: ";
    cin >> ilosc_ocen;

    double ocena[ilosc_ocen], ects [ilosc_ocen];

        for(oceny=1; oceny<=ilosc_ocen ; oceny ++)
        {

            cout << "Podaj " << oceny << " ocene: ";
            cin >> ocena [oceny] ;
            cout << "Podaj ilosc punktow ECTS za te ocene:  ";
            cin >> ects [oceny];

            suma += ocena[oceny]*ects[oceny];
            suma_ects +=ects[oceny];

        }
            srednia=suma/suma_ects;

Do kodu mojego:

#include <iostream>
using namespace std;

int main()

{

int a, b, c,d;
int max, min;
int x;
int wybor;
double srednia;

int g, n;
double w = 0.0;

cout << "Podaj pierwsza liczbe: ";
cin >> a;
cout << "Podaj druga liczbe: ";
cin >> b;
cout << "Podaj trzecia liczbe: ";
cin >> c;
cout<<"Podaj czwarta liczbe: ";
cin>>d;

    cout<<"MENU"<<endl;
    cout<<"1.MAX"<<endl;
    cout<<"2.MIN"<<endl;
    cout<<"3.Srednia"<<endl;
    cout<<"4.(a+b)/(c+d)"<<endl;
    cout<<"5.Srednia wazona"<<endl;
    cout<<"6.Zakoncz program"<<endl;
    cout<<"Wybierz opcje: "<<endl;
    cin>>wybor;

 if  (a > b)
     x = a; else x = b;
 if (x > c)
    max = x; else max = c;
 if (d>max)
     max=d;

if  (a < b)
    x = a; else x = b;
if  (x < c)
    min = x; else min = c;
if (d<min)
     min=d;

//Srednia
std::cin >> n;

for( int i = 0; i < n; i++ )
{

    std::cin >> g;
    w += g;

}

//Srednia wa¿ona

switch(wybor)
    {
        case 1:
        cout << "Najwieksza liczba jest liczba "<< max << endl;
        break;

        case 2:
        cout << "Najmniejsza liczba jest liczba "<< min << endl;
        break;

        case 3:
        cout << "Srednia to: "<< w/n  << endl;
        break;

        case 4:

        break;

        case 5:

        break;

    }
}

Z góry bardzo Dziękuję

0

Nie ma sensu używać Twoich zmiennych w pętli, lepiej to zrobić wykorzystując do tego tablicę.

W Visual Studio 2017 wyskakują mi błędy. Kod, który wysłałeś jest nie poprawny albo kompilator którego używasz pozwala na takie konstrukcje.

Twoje tablice powinny być typu wskaźnikowego żeby działało to poprawnie. Osobiście polecam Ci użycie kontenerów z biblioteki STL np. vector.

double  *ocena  = new double[ilosc_ocen];
double  *ects   = new double[ilosc_ocen];
0

Tomcze15 czy mógłbyś mnie bardziej nakierować?
Ja korzystam z codbloksa

0

Weź sformatuj kod (wcięcia jak trzeba, nowe linie tam gdzie trzeba), https://stackoverflow.com/a/26349153/1387438 (sam sobie musisz zdefiniować skrót klawiszowy), albo używając strony http://format.krzaq.cc/

Do średniej ważonej potrzebujesz informacji o wagach ocen. Skąd masz dostać te wagi?

0

@MarekR22: mogę zdefiniować stałe, albo wpisywać je ręcznie za każdym razem

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