Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

If jest pomijane w pętli for.

Ostatnio zmodyfikowano 2014-02-25 18:06
Autor Wiadomość
Tym3k
Temat założony przez niniejszego użytkownika
If jest pomijane w pętli for.
» 2014-02-25 14:35:22
C/C++
#include <iostream>
#include <string>
#include <cstdlib>
#include <conio.h>

using namespace std;

int ile;

struct Bar {
    int id_n;
    string nazwa;
    string rodzaj;
    float cena;
   
} napoj[ 10 ];

int menu();
void wprowadz_napoje();
int informacje_o_napojach();
void wyswietl_napoje_na_litere();
int sredni_przedzial_cenowy();
void wyjscie();
//***************************************
int main()
{
   
    wprowadz_napoje();
   
    switch( menu() )
    {
        system( "CLS" );
    case 1: {
            // wprowadz_napoje();
           
            break;
        }
    case 2: {
            //**************
            switch( informacje_o_napojach() )
           
            {
                system( "CLS" );
            case 4: {
                    wyswietl_napoje_na_litere();
                   
                    break;
                }
            case 5: {
                    sredni_przedzial_cenowy();
                    break;
                }
                /**************/
            }
        case 3: {
                wyjscie();
                break;
            }
        }
    }
    //return menu();
    getchar();
}
//***************************************
int menu()
{
    int opcja;
   
    do {
        cout << "---Menu programu bar---" << endl;
        cout << "1. Wprowadz napoje" << endl;
        cout << "2. Wyswietl informacje o napojach" << endl;
        cout << "3. Wyjscie" << endl;
        cout << "wybierz 1,2 lub 3" << endl;
        cin >> opcja;
        system( "CLS" );
    } while( opcja < 1 || opcja > 3 );
   
    return opcja;
}

void wprowadz_napoje()
{
    cout << "ile napojow chcesz dodac do menu" << endl;
   
    cin >> ile;
    for( int i = 0; i < ile; i++ )
    {
        cin.clear(); cin.sync();
        napoj[ i ].id_n = i + 1;
        cout << "Wprowadz " << i + 1 << "napoj\n";
        cout << "Podaj nazwe: "; cin >> napoj[ i ].nazwa; //getline(cin, napoj[i].nazwa);
        cout << "Podaj rodzaj: "; cin >> napoj[ i ].rodzaj; //getline(cin, napoj[i].rodzaj);
        cout << "Podaj cene: "; cin >> napoj[ i ].cena; //getline(cin, napoj[i].cena);
    }
}
int informacje_o_napojach()
{
    int opcja;
   
    do {
        cout << "4. Na jaka litere chcesz zobaczyc napoje" << endl;
        cout << "5. wyliczanie napoi ze sredniego przedzialu cenowego" << endl;
        cin >> opcja;
        cout << " wybierz opcje 4 lub 5" << endl;
    } while( opcja < 4 || opcja > 5 );
   
    return opcja;
}

void wyswietl_napoje_na_litere()
{
    char litera;
    cout << "Wyswietlic wszystkie napoje zaczynajace sie od jakiej litery?" << endl;
    cin >> litera;
    for( int i = 0; i < ile; i++ )
    {
        if( napoj[ i ].nazwa[ 0 ] == litera )
             cout << napoj[ i ].nazwa << endl;
       
    }
}
int sredni_przedzial_cenowy()
{
    int srednia, suma;
    for( int i = 0; i < ile; i++ )
    {
       
        suma = suma + napoj[ i ].cena;
    }
    srednia = suma / ile;
    cout << "srednia cena napojow wynosi" << srednia << endl;;
   
    for( int i = 0; i < ile; i++ )
    {
        if( napoj[ i ].cena < srednia + 10 || napoj[ i ].cena > srednia - 10 )
        cout << i + 1 << "."; cout << napoj[ i ].nazwa << " kosztuje " << napoj[ i ].cena << endl;
       
    }
}

void wyjscie()
{
    char wyjscie;
    cout << "Aby wyjsc z programu, wcisnij Esc " << endl;
    wyjscie = getch();
    if( wyjscie == 27 )
         cout << "Dziekuje za skorzystanie z programu " << endl;
   
}

Jak wybieram aby pokazał zaczynające się od danej litery napoje to potem oblicza też średnią, ktoś widzi dlaczego?
P-105249
Wasilek
» 2014-02-25 15:09:47
Polecam stosowanie {} :)
P-105250
Tym3k
Temat założony przez niniejszego użytkownika
» 2014-02-25 15:11:27
C/C++
case 2: {
    //**************
    switch( informacje_o_napojach() )
    system( "CLS" );
case 4: {
        wyswietl_napoje_na_litere();
        break;
    }
case 5: {
        sredni_przedzial_cenowy();
        break;
    }
    break;
    /**************/
}

Ale chyba jest dobrze zamknięte?
P-105251
leon_w
» 2014-02-25 15:13:53
No chyba nie. case 2
P-105252
Tym3k
Temat założony przez niniejszego użytkownika
» 2014-02-25 15:16:21
C/C++
int sredni_przedzial_cenowy()
{
    int srednia, suma;
    for( int i = 0; i < ile; i++ )
    {
       
        suma = suma + napoj[ i ].cena;
    }
    srednia = suma / ile;
    cout << "srednia cena napojow wynosi" << srednia << endl;;
   
    for( int i = 0; i < ile; i++ )
    {
        if( napoj[ i ].cena < srednia + 10 || napoj[ i ].cena > srednia - 10 )
             cout << i + 1 << "."; cout << napoj[ i ].nazwa << " kosztuje " << napoj[ i ].cena << endl;
       
    }
}

Powie mi ktoś dlaczego For omija warunek IF? i dla np.
1. 50 zł
2. 75 zł
3. 100 zł
pokaże mi wszystkie a nie tylko 75 ?
bo ma wtedy pokazać z przedziału (65-85)
P-105253
SeaMonster131
» 2014-02-25 18:06:57
Zeruj zmienne przy deklaracji oraz pomyliłeś || z &&.
P-105261
« 1 »
  Strona 1 z 1