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

[C++] error C4716: 'srednia_glowna' : must return a value

Ostatnio zmodyfikowano 2013-09-29 12:49
Autor Wiadomość
barti2287
Temat założony przez niniejszego użytkownika
[C++] error C4716: 'srednia_glowna' : must return a value
» 2013-09-29 02:05:25
Witam. Jestem w trakcie pisania programu, który oblicza średnią, zapisuje ją do pliku razem z ocenami, a także wczytuje je ( w dużym skrócie). W Dev-C++ działał ok, ale jak przerzuciłem się na Microsoft Visual C++ 2010 Express pojawiły się błędy w kompilacji:
error C4716: 'srednia_glowna' : must return a value
error C4716: 'nowe_oceny_zapis' : must return a value
warning C4700: uninitialized local variable 'io' used
warning C4700: uninitialized local variable 'sr' used
warning C4700: uninitialized local variable 'io' used
Project : error (null) : Build errors occurred.

1. Funkcja musi zwracać wartość. Oczywiście, jest to podstawa. Zaraz poprawiłem kod. Mimo, że podczas kompilacji nie wykazało błędu, to funkcja zamiast zwracać średnią zwróciła wartość losową. Czemu?

Poniżej wklejam kod:

C/C++
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>

using namespace std;

int id;


//Funkcja sprawdzajaca istnienie pliku, ewentualnie tworzaca go.
string istnienie_pliku( string np )
{
    ifstream plik_test( np.c_str() );
    if( plik_test.good() )
    {
       
        plik_test.close();
    }
   
    else
    {
        ofstream plik_nowy( np.c_str() );
        if( plik_nowy.good() )
        {
           
            plik_nowy.close();
        }
    }
    return "";
}

// Funkcja obliczająca średnią główną bez zapisywania jej.
float srednia_glowna( float oc[ 15 ], int io )
{
    cout << "Podaj ilosc ocen: ";
    cin >> io;
    cout << "Podaj oceny: ";
   
    for( int i = 0; i < io; i++ )
    {
        cin >> oc[ i ];
    }
   
    for( int i = 0; i < io; i++ )
    {
        oc[ 0 ] = oc[ 0 ] + oc[ i + 1 ];
    }
   
    cout << "Twoja srednia glowna to: " << oc[ 0 ] / io << "\n\n";
}
// Funkcja zapisująca na bieżąco podawane oceny i średnią do pliku.
float nowe_oceny_zapis( float oc[ 15 ], int io, int sr )
{
    string np1, np2, np3;
   
    cout << "Podaj nazwe pliku, w ktorym chcesz zapisac oceny: ";
    cin >> np1;
   
    np2 = np1 + ".txt";
    np3 = np1 + "_sr.txt";
   
    cout << "Podaj ilosc ocen: ";
    cin >> io;
    ::id = io;
   
    cout << "Podaj oceny: ";
   
    cout << istnienie_pliku( np2 );
    fstream plik1( np2.c_str(), ios::out | ios::in | ios::trunc );
    if( plik1.good() )
    {
        for( int i = 0; i < io; i++ )
        {
            cin >> oc[ i ];
            plik1 << oc[ i ] << "\n";
        }
       
        for( int i = 0; i < io; i++ )
        {
            oc[ 14 ] = oc[ 14 ] + oc[ i ];
        }
       
        cout << "Twoja srednia to: " << oc[ 14 ] / io << "\n\n";
       
        plik1.close();
       
    } else cout << "Dostep do pliku zabroniony!\n";
   
    cout << istnienie_pliku( np3 );
    fstream plik2( np3.c_str(), ios::out | ios::in | ios::trunc );
    if( plik2.good() )
    {
        plik2 << oc[ 14 ] / io;
       
        plik2.close();
    } else cout << "Dostep do pliku zabroniony!\n";
   
}

int main()
{
    start:
    int op1;
    cout << "Kalkulator Sredniej Wazonej\n"
    << "---------------------------\n\n"
    << "Wybierz modul:\n"
    << "--------------\n\n"
    << "1. Srednia Glowna (ze wszystkich przedmiotow).\n"
    << "2. Srednia Przedmiotowa (z pojedynczego przedmiotu).\n"
    << "0. Wyjdz.\n\n"
    << "Twoj Wybor: ";
   
    cin >> op1;
    cout << endl << endl;
   
    switch( op1 )
    {
    case 1:
        {
            int op2;
           
            cout << "Srednia Glowna:\n"
            << "--------------\n\n"
            << "Wybierz opcje:\n"
            << "--------------\n\n"
            << "1. Oblicz srednia bez zapisywania i odczytywania.\n"
            << "2. Wczytaj oceny.\n"
            << "3. Podaj nowe oceny i je zapisz.\n"
            << "4. Wstecz.\n"
            << "5. Wyjdz.\n"
            << "Twoj Wybor: ";
           
            cin >> op2;
            cout << endl << endl;
           
            switch( op2 )
            {
            case 1:
                {
                    int io;
                    float oc[ 15 ];
                   
                    cout << srednia_glowna( oc, io );
                    cout << endl << endl;
                    goto start;
                   
                    break;
                }
               
            case 2:
                {
                    int op3;
                    string np1, np2, np3;
                   
                    cout << "Podaj nazwe pliku do wczytania: ";
                    cin >> np1;
                    np2 = np1 + ".txt";
                    np3 = np1 + "_sr.txt";
                    cout << "\n\n";
                   
                    cout << "Wczytaj oceny:\n"
                    << "--------------\n\n"
                    << "Wybierz opcje:\n"
                    << "--------------\n\n"
                    << "1. Oblicz srednia ocen z pliku.\n"
                    << "2. Dodaj nowe oceny do pliku.\n"
                    << "3. Edytuj oceny z pliku.\n"
                    << "4. Usuń ocene z pliku.\n"
                    << "5. Wyczysc plik.\n"
                    << "6. Wstecz.\n"
                    << "7. Wyjdz.\n"
                    << "Twoj Wybor: ";
                   
                    cin >> op3;
                    cout << "\n\n";
                   
                    switch( op3 )
                    {
                    case 1:
                        {
                            float sr;
                           
                            fstream plik3( np3.c_str(), ios::in | ios::out );
                            if( plik3.good() )
                            {
                                plik3 >> sr;
                                cout << "Srednia ocen pliku " << np1 << " to: " << sr;
                               
                                plik3.close();
                            } else cout << "Dostep do pliku zabroniony!\n\n";
                           
                            break;
                        }
                       
                    case 2:
                        {
                           
                           
                            break;
                        }
                       
                    case 3:
                        {
                           
                           
                            break;
                        }
                       
                    case 4:
                        {
                           
                           
                            break;
                        }
                       
                    case 5:
                        {
                           
                           
                            break;
                        }
                       
                    case 6:
                        {
                            goto start;
                           
                            break;
                        }
                       
                    case 7:
                        {
                            goto start;
                        }
                       
                    case 8:
                        {
                            goto end;
                        }
                       
                        default:
                        {
                            goto end;
                        }
                    }
                   
                    break;
                }
               
            case 3:
                {
                    int io, sr;
                    float oc[ 15 ];
                    cout << nowe_oceny_zapis( oc, io, sr );
                    cout << endl << endl;
                    goto start;
                   
                    break;
                }
               
            case 4:
                {
                    goto start;
                }
               
            case 0:
                {
                    goto end;
                }
               
                default:
                {
                    goto end;
                }
            }
           
            break;
        }
       
    case 2:
        {
           
           
            break;
        }
       
    case 0:
        {
            goto end;
        }
       
        default:
        {
            goto end;
        }
    }
   
    end:
    return 0;
}
P-92836
rafixxx25
» 2013-09-29 10:54:07
Po 1:
nie używaj
goto

Po 2:
nadal nie widzę, by twoje funkcje srednia_glowna i nowe_oceny_zapis zwracały jakąś wartość.
P-92840
barti2287
Temat założony przez niniejszego użytkownika
» 2013-09-29 11:40:01
1. Dzięki za radę, aczkolwiek nie jest to przyczyna problemu.
2. Funkcja nie zwraca wartości, bo wkleiłem wersję niepoprawioną. Spytam się inaczej: czy jest możliwość nie wyświetlania w konsoli wartości zwracanej przez funkcję? Wiem, że jest coś takiego jak void, ale gdy zmieniam deklarację funkcji wyskakują mi astronomiczne błędy, prawdopodobnie przez argumenty typu float i int.

Poniżej wklejam poprawiony, ale nie działający kod - kompiluje się poprawnie, ale potem wyskakuje okienko: "variable io is using without being initialized. Break or Continue." W przypadku continue wyskakuje losowa wartość. W przypadku gdy zmienie kod na io=0; przy deklaracji to samo. Identyczna rzecz dzieje się w przypadku zapisywania do pliku (chcę zaznaczyć, że poprzedni kod działał w Devie idealnie). Problem chyba jest w funkcjach. O co chodzi?

C/C++
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>

using namespace std;

int id;


//Funkcja sprawdzajaca istnienie pliku, ewentualnie tworzaca go.
string istnienie_pliku( string np )
{
    ifstream plik_test( np.c_str() );
    if( plik_test.good() )
    {
       
        plik_test.close();
    }
   
    else
    {
        ofstream plik_nowy( np.c_str() );
        if( plik_nowy.good() )
        {
           
            plik_nowy.close();
        }
    }
    return "";
}

// Funkcja obliczająca średnią główną bez zapisywania jej.
float srednia_glowna( float oc[ 15 ], int io )
{
    cout << "Podaj ilosc ocen: ";
    cin >> io;
    cout << "Podaj oceny: ";
   
    for( int i = 0; i < io; i++ )
    {
        cin >> oc[ i ];
    }
   
    for( int i = 0; i < io; i++ )
    {
        oc[ 0 ] = oc[ 0 ] + oc[ i + 1 ];
    }
   
    cout << "Twoja srednia glowna to: ";
    return oc[ 0 ] / io;
}
// Funkcja zapisująca na bieżąco podawane oceny i średnią do pliku.
float nowe_oceny_zapis( float oc[ 15 ], int io, int sr )
{
    string np1, np2, np3;
   
    cout << "Podaj nazwe pliku, w ktorym chcesz zapisac oceny: ";
    cin >> np1;
   
    np2 = np1 + ".txt";
    np3 = np1 + "_sr.txt";
   
    cout << "Podaj ilosc ocen: ";
    cin >> io;
    ::id = io;
   
    cout << "Podaj oceny: ";
   
    cout << istnienie_pliku( np2 );
    fstream plik1( np2.c_str(), ios::out | ios::in | ios::trunc );
    if( plik1.good() )
    {
        for( int i = 0; i < io; i++ )
        {
            cin >> oc[ i ];
            plik1 << oc[ i ] << "\n";
        }
       
        for( int i = 0; i < io; i++ )
        {
            oc[ 14 ] = oc[ 14 ] + oc[ i ];
        }
       
        plik1.close();
       
    } else cout << "Dostep do pliku zabroniony!\n";
   
    cout << istnienie_pliku( np3 );
    fstream plik2( np3.c_str(), ios::out | ios::in | ios::trunc );
    if( plik2.good() )
    {
        plik2 << oc[ 14 ] / io;
       
        plik2.close();
    } else cout << "Dostep do pliku zabroniony!\n";
   
    cout << "Twoja srednia to: ";
    return oc[ 14 ] / io;
}

int main()
{
    start:
    int op1;
    cout << "Kalkulator Sredniej Wazonej\n"
    << "---------------------------\n\n"
    << "Wybierz modul:\n"
    << "--------------\n\n"
    << "1. Srednia Glowna (ze wszystkich przedmiotow).\n"
    << "2. Srednia Przedmiotowa (z pojedynczego przedmiotu).\n"
    << "0. Wyjdz.\n\n"
    << "Twoj Wybor: ";
   
    cin >> op1;
    cout << endl << endl;
   
    switch( op1 )
    {
    case 1:
        {
            int op2;
           
            cout << "Srednia Glowna:\n"
            << "--------------\n\n"
            << "Wybierz opcje:\n"
            << "--------------\n\n"
            << "1. Oblicz srednia bez zapisywania i odczytywania.\n"
            << "2. Wczytaj oceny.\n"
            << "3. Podaj nowe oceny i je zapisz.\n"
            << "4. Wstecz.\n"
            << "5. Wyjdz.\n"
            << "Twoj Wybor: ";
           
            cin >> op2;
            cout << endl << endl;
           
            switch( op2 )
            {
            case 1:
                {
                    int io;
                    float oc[ 15 ];
                   
                    cout << srednia_glowna( oc, io );
                    cout << endl << endl;
                    goto start;
                   
                    break;
                }
               
            case 2:
                {
                    int op3;
                    string np1, np2, np3;
                   
                    cout << "Podaj nazwe pliku do wczytania: ";
                    cin >> np1;
                    np2 = np1 + ".txt";
                    np3 = np1 + "_sr.txt";
                    cout << "\n\n";
                   
                    cout << "Wczytaj oceny:\n"
                    << "--------------\n\n"
                    << "Wybierz opcje:\n"
                    << "--------------\n\n"
                    << "1. Oblicz srednia ocen z pliku.\n"
                    << "2. Dodaj nowe oceny do pliku.\n"
                    << "3. Edytuj oceny z pliku.\n"
                    << "4. Usuń ocene z pliku.\n"
                    << "5. Wyczysc plik.\n"
                    << "6. Wstecz.\n"
                    << "7. Wyjdz.\n"
                    << "Twoj Wybor: ";
                   
                    cin >> op3;
                    cout << "\n\n";
                   
                    switch( op3 )
                    {
                    case 1:
                        {
                            float sr;
                           
                            fstream plik3( np3.c_str(), ios::in | ios::out );
                            if( plik3.good() )
                            {
                                plik3 >> sr;
                                cout << "Srednia ocen pliku " << np1 << " to: " << sr;
                               
                                plik3.close();
                            } else cout << "Dostep do pliku zabroniony!\n\n";
                           
                            break;
                        }
                       
                    case 2:
                        {
                           
                           
                            break;
                        }
                       
                    case 3:
                        {
                           
                           
                            break;
                        }
                       
                    case 4:
                        {
                           
                           
                            break;
                        }
                       
                    case 5:
                        {
                           
                           
                            break;
                        }
                       
                    case 6:
                        {
                            goto start;
                           
                            break;
                        }
                       
                    case 7:
                        {
                            goto start;
                        }
                       
                    case 8:
                        {
                            goto end;
                        }
                       
                        default:
                        {
                            goto end;
                        }
                    }
                   
                    break;
                }
               
            case 3:
                {
                    int io, sr;
                    float oc[ 15 ];
                    cout << nowe_oceny_zapis( oc, io, sr );
                    cout << endl << endl;
                    goto start;
                   
                    break;
                }
               
            case 4:
                {
                    goto start;
                }
               
            case 0:
                {
                    goto end;
                }
               
                default:
                {
                    goto end;
                }
            }
           
            break;
        }
       
    case 2:
        {
           
           
            break;
        }
       
    case 0:
        {
            goto end;
        }
       
        default:
        {
            goto end;
        }
    }
   
    end:
    return 0;
}
P-92844
pekfos
» 2013-09-29 12:01:34
Podajesz do funkcji niezainicjalizowane zmienne. Argument io w ogóle nie jest potrzebny. Równie dobrze możesz użyć zwykłej zmiennej lokalnej.
P-92847
barti2287
Temat założony przez niniejszego użytkownika
» 2013-09-29 12:16:29
Poprawiłem kod, kompilator nic już nie wykrywa, ale nadal obie funkcje zwracają losową wartość (-5.36871e+007 -> średnia z 3 i 4). Poniżej wklejam nowy kod:

C/C++
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>

using namespace std;

int id;


//Funkcja sprawdzajaca istnienie pliku, ewentualnie tworzaca go.
string istnienie_pliku( string np )
{
    ifstream plik_test( np.c_str() );
    if( plik_test.good() )
    {
       
        plik_test.close();
    }
   
    else
    {
        ofstream plik_nowy( np.c_str() );
        if( plik_nowy.good() )
        {
           
            plik_nowy.close();
        }
    }
    return "";
}

// Funkcja obliczająca średnią główną bez zapisywania jej.
float srednia_glowna( float oc[ 15 ] )
{
    int io;
    cout << "Podaj ilosc ocen: ";
    cin >> io;
    cout << "Podaj oceny: ";
   
    for( int i = 0; i < io; i++ )
    {
        cin >> oc[ i ];
    }
   
    for( int i = 0; i < io; i++ )
    {
        oc[ 0 ] = oc[ 0 ] + oc[ i + 1 ];
    }
   
    cout << "Twoja srednia glowna to: ";
    return oc[ 0 ] / io;
}
// Funkcja zapisująca na bieżąco podawane oceny i średnią do pliku.
float nowe_oceny_zapis( float oc[ 15 ] )
{
    int io;
    string np1, np2, np3;
   
    cout << "Podaj nazwe pliku, w ktorym chcesz zapisac oceny: ";
    cin >> np1;
   
    np2 = np1 + ".txt";
    np3 = np1 + "_sr.txt";
   
    cout << "Podaj ilosc ocen: ";
    cin >> io;
    ::id = io;
   
    cout << "Podaj oceny: ";
   
    cout << istnienie_pliku( np2 );
    fstream plik1( np2.c_str(), ios::out | ios::in | ios::trunc );
    if( plik1.good() )
    {
        for( int i = 0; i < io; i++ )
        {
            cin >> oc[ i ];
            plik1 << oc[ i ] << "\n";
        }
       
        for( int i = 0; i < io; i++ )
        {
            oc[ 14 ] = oc[ 14 ] + oc[ i ];
        }
       
        plik1.close();
       
    } else cout << "Dostep do pliku zabroniony!\n";
   
    cout << istnienie_pliku( np3 );
    fstream plik2( np3.c_str(), ios::out | ios::in | ios::trunc );
    if( plik2.good() )
    {
        plik2 << oc[ 14 ] / io;
       
        plik2.close();
    } else cout << "Dostep do pliku zabroniony!\n";
   
    cout << "Twoja srednia to: ";
    return oc[ 14 ] / io;
}

int main()
{
    start:
    int op1;
    cout << "Kalkulator Sredniej Wazonej\n"
    << "---------------------------\n\n"
    << "Wybierz modul:\n"
    << "--------------\n\n"
    << "1. Srednia Glowna (ze wszystkich przedmiotow).\n"
    << "2. Srednia Przedmiotowa (z pojedynczego przedmiotu).\n"
    << "0. Wyjdz.\n\n"
    << "Twoj Wybor: ";
   
    cin >> op1;
    cout << endl << endl;
   
    switch( op1 )
    {
    case 1:
        {
            int op2;
           
            cout << "Srednia Glowna:\n"
            << "--------------\n\n"
            << "Wybierz opcje:\n"
            << "--------------\n\n"
            << "1. Oblicz srednia bez zapisywania i odczytywania.\n"
            << "2. Wczytaj oceny.\n"
            << "3. Podaj nowe oceny i je zapisz.\n"
            << "4. Wstecz.\n"
            << "5. Wyjdz.\n"
            << "Twoj Wybor: ";
           
            cin >> op2;
            cout << endl << endl;
           
            switch( op2 )
            {
            case 1:
                {
                    float oc[ 15 ];
                   
                    cout << srednia_glowna( oc );
                    cout << endl << endl;
                    goto start;
                   
                    break;
                }
               
            case 2:
                {
                    int op3;
                    string np1, np2, np3;
                   
                    cout << "Podaj nazwe pliku do wczytania: ";
                    cin >> np1;
                    np2 = np1 + ".txt";
                    np3 = np1 + "_sr.txt";
                    cout << "\n\n";
                   
                    cout << "Wczytaj oceny:\n"
                    << "--------------\n\n"
                    << "Wybierz opcje:\n"
                    << "--------------\n\n"
                    << "1. Oblicz srednia ocen z pliku.\n"
                    << "2. Dodaj nowe oceny do pliku.\n"
                    << "3. Edytuj oceny z pliku.\n"
                    << "4. Usuń ocene z pliku.\n"
                    << "5. Wyczysc plik.\n"
                    << "6. Wstecz.\n"
                    << "7. Wyjdz.\n"
                    << "Twoj Wybor: ";
                   
                    cin >> op3;
                    cout << "\n\n";
                   
                    switch( op3 )
                    {
                    case 1:
                        {
                           
                        }
                       
                    case 2:
                        {
                           
                           
                            break;
                        }
                       
                    case 3:
                        {
                           
                           
                            break;
                        }
                       
                    case 4:
                        {
                           
                           
                            break;
                        }
                       
                    case 5:
                        {
                           
                           
                            break;
                        }
                       
                    case 6:
                        {
                            goto start;
                           
                            break;
                        }
                       
                    case 7:
                        {
                            goto start;
                        }
                       
                    case 8:
                        {
                            goto end;
                        }
                       
                        default:
                        {
                            goto end;
                        }
                    }
                   
                    break;
                }
               
            case 3:
                {
                    float oc[ 15 ];
                    cout << nowe_oceny_zapis( oc );
                    cout << endl << endl;
                    goto start;
                   
                    break;
                }
               
            case 4:
                {
                    goto start;
                }
               
            case 0:
                {
                    goto end;
                }
               
                default:
                {
                    goto end;
                }
            }
           
            break;
        }
       
    case 2:
        {
           
           
            break;
        }
       
    case 0:
        {
            goto end;
        }
       
        default:
        {
            goto end;
        }
    }
   
    end:
    return 0;
}
P-92849
pekfos
» 2013-09-29 12:22:41
Argument oc też nie jest potrzebny.

Co do problemu, wychodzisz poza tablicę.
P-92850
barti2287
Temat założony przez niniejszego użytkownika
» 2013-09-29 12:45:17
Zwiększyłem tablicę do 30, usunąłem argument, zrobiłem zmienną lokalną i dalej to samo (przy 2 ocenach).
Poprawiony kod:

C/C++
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>

using namespace std;

int id;


//Funkcja sprawdzajaca istnienie pliku, ewentualnie tworzaca go.
string istnienie_pliku( string np )
{
    ifstream plik_test( np.c_str() );
    if( plik_test.good() )
    {
       
        plik_test.close();
    }
   
    else
    {
        ofstream plik_nowy( np.c_str() );
        if( plik_nowy.good() )
        {
           
            plik_nowy.close();
        }
    }
    return "";
}

// Funkcja obliczająca średnią główną bez zapisywania jej.
float srednia_glowna()
{
    int io;
    float oc[ 30 ];
    cout << "Podaj ilosc ocen: ";
    cin >> io;
    cout << "Podaj oceny: ";
   
    for( int i = 0; i < io; i++ )
    {
        cin >> oc[ i ];
    }
   
    for( int i = 0; i < io; i++ )
    {
        oc[ 30 ] = oc[ 30 ] + oc[ i ];
    }
   
    cout << "Twoja srednia glowna to: ";
    return oc[ 30 ] / io;
}
// Funkcja zapisująca na bieżąco podawane oceny i średnią do pliku.
float nowe_oceny_zapis()
{
    int io;
    float oc[ 30 ];
    string np1, np2, np3;
   
    cout << "Podaj nazwe pliku, w ktorym chcesz zapisac oceny: ";
    cin >> np1;
   
    np2 = np1 + ".txt";
    np3 = np1 + "_sr.txt";
   
    cout << "Podaj ilosc ocen: ";
    cin >> io;
    ::id = io;
   
    cout << "Podaj oceny: ";
   
    cout << istnienie_pliku( np2 );
    fstream plik1( np2.c_str(), ios::out | ios::in | ios::trunc );
    if( plik1.good() )
    {
        for( int i = 0; i < io; i++ )
        {
            cin >> oc[ i ];
            plik1 << oc[ i ] << "\n";
        }
       
        for( int i = 0; i < io; i++ )
        {
            oc[ 30 ] = oc[ 30 ] + oc[ i ];
        }
       
        plik1.close();
       
    } else cout << "Dostep do pliku zabroniony!\n";
   
    cout << istnienie_pliku( np3 );
    fstream plik2( np3.c_str(), ios::out | ios::in | ios::trunc );
    if( plik2.good() )
    {
        plik2 << oc[ 30 ] / io;
       
        plik2.close();
    } else cout << "Dostep do pliku zabroniony!\n";
   
    cout << "Twoja srednia to: ";
    return oc[ 30 ] / io;
}

int main()
{
    start:
    int op1;
    cout << "Kalkulator Sredniej Wazonej\n"
    << "---------------------------\n\n"
    << "Wybierz modul:\n"
    << "--------------\n\n"
    << "1. Srednia Glowna (ze wszystkich przedmiotow).\n"
    << "2. Srednia Przedmiotowa (z pojedynczego przedmiotu).\n"
    << "0. Wyjdz.\n\n"
    << "Twoj Wybor: ";
   
    cin >> op1;
    cout << endl << endl;
   
    switch( op1 )
    {
    case 1:
        {
            int op2;
           
            cout << "Srednia Glowna:\n"
            << "--------------\n\n"
            << "Wybierz opcje:\n"
            << "--------------\n\n"
            << "1. Oblicz srednia bez zapisywania i odczytywania.\n"
            << "2. Wczytaj oceny.\n"
            << "3. Podaj nowe oceny i je zapisz.\n"
            << "4. Wstecz.\n"
            << "5. Wyjdz.\n"
            << "Twoj Wybor: ";
           
            cin >> op2;
            cout << endl << endl;
           
            switch( op2 )
            {
            case 1:
                {
                    cout << srednia_glowna();
                    cout << endl << endl;
                    goto start;
                   
                    break;
                }
               
            case 2:
                {
                    int op3;
                    string np1, np2, np3;
                   
                    cout << "Podaj nazwe pliku do wczytania: ";
                    cin >> np1;
                    np2 = np1 + ".txt";
                    np3 = np1 + "_sr.txt";
                    cout << "\n\n";
                   
                    cout << "Wczytaj oceny:\n"
                    << "--------------\n\n"
                    << "Wybierz opcje:\n"
                    << "--------------\n\n"
                    << "1. Oblicz srednia ocen z pliku.\n"
                    << "2. Dodaj nowe oceny do pliku.\n"
                    << "3. Edytuj oceny z pliku.\n"
                    << "4. Usuń ocene z pliku.\n"
                    << "5. Wyczysc plik.\n"
                    << "6. Wstecz.\n"
                    << "7. Wyjdz.\n"
                    << "Twoj Wybor: ";
                   
                    cin >> op3;
                    cout << "\n\n";
                   
                    switch( op3 )
                    {
                    case 1:
                        {
                           
                        }
                       
                    case 2:
                        {
                           
                           
                            break;
                        }
                       
                    case 3:
                        {
                           
                           
                            break;
                        }
                       
                    case 4:
                        {
                           
                           
                            break;
                        }
                       
                    case 5:
                        {
                           
                           
                            break;
                        }
                       
                    case 6:
                        {
                            goto start;
                           
                            break;
                        }
                       
                    case 7:
                        {
                            goto start;
                        }
                       
                    case 8:
                        {
                            goto end;
                        }
                       
                        default:
                        {
                            goto end;
                        }
                    }
                   
                    break;
                }
               
            case 3:
                {
                    cout << nowe_oceny_zapis();
                    cout << endl << endl;
                    goto start;
                   
                    break;
                }
               
            case 4:
                {
                    goto start;
                }
               
            case 0:
                {
                    goto end;
                }
               
                default:
                {
                    goto end;
                }
            }
           
            break;
        }
       
    case 2:
        {
           
           
            break;
        }
       
    case 0:
        {
            goto end;
        }
       
        default:
        {
            goto end;
        }
    }
   
    end:
    return 0;
}
P-92851
DejaVu
» 2013-09-29 12:49:27
Dalej wychodzisz poza zakres tablicy. Poczytaj rozdział dot. tablic.

PS. Jeden temat = jeden problem. Temat opisuje problem związany z błędami kompilacji, a nie z błędami w wyliczeniach. Zamykam.
P-92853
« 1 »
  Strona 1 z 1