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

Materiały dodatkowe Kurs XVII i XVIII - podsumowanie zadanie 1

Ostatnio zmodyfikowano 2011-09-22 09:33
Autor Wiadomość
Crassus
Temat założony przez niniejszego użytkownika
» 2011-09-21 16:37:42
C/C++
#include<iostream>
#include<conio.h>
#include<cmath>
#include<limits>

using namespace std;

float oceny( float t[] )
{
    cout << "Wprowadzaj oceny: " << endl;
    int ile = 10;
    for( int i = 0; i < ile; i++ )
    {
        a:
        cin >> t[ i ];
        bool czylicz = cin.good();
        cin.clear();
        cin.sync();
        switch( czylicz )
        {
        case 0:
            cout << "Wprowadzaj liczby zeczywiste!!" << endl;
            goto a;
            break;
        default:
            break;
        }
    }
    return 0;
}
float srednia( float t[] )
{
    float suma;
    float srednia;
    int ile = 10;
    for( int i = 0; i < ile; i++ )
    {
        suma += t[ i ];
    }
    srednia = suma / ile;
    cout << "Srednia ocen: " << srednia << endl;
    return 0;
}
int main()
{
    int i = 10;
    float t[ i ];
    cout << "Program przyjmuje oceny do podania 0," << endl;
    cout << "co konczy wprowadzanie i powoduje podanie sredniej" << endl;
    do {
        cin >> t[ i ];
        oceny( t );
        cout << t;
    } while( i != 0 );
   
    srednia( t );
    getch();
    return 0;
}
Mam strumień wejściowy poza glówną funkcja w funkcji oceny(), już mi się wszystko plącze, wyprowadżcie mnie z lasu bo już sam nie jestem pewien czy wiem co robię.
Czy powiniem przerobic caly program zeby wprowadzane dane byly przekazywane funkcji oceny() z wejscia w funkcji glownej main()? Po raz dziesiaty nie moge.
P-41240
pekfos
» 2011-09-21 16:45:40
tyle kodu i goto?! w kursie jest goto omówione? o.O
P-41241
DejaVu
» 2011-09-21 16:49:49
Sugeruję przeczytanie jeszcze raz » KursyKurs C++ kurs. Z pewnością korzystasz z innego źródła wiedzy niż ten, który wymieniłem skoro używasz instrukcji goto. Napisz funkcję małą, która robi 'coś' (np. wczytuje liczby i weryfikuje ich poprawność). Przetestuj ją czy działa. Później wykorzystuj ją w dalszej części programu i tak postępuj z każdą kolejną częścią pisanego kodu.
P-41242
Crassus
Temat założony przez niniejszego użytkownika
» 2011-09-21 16:50:40
Tak
P-41243
pekfos
» 2011-09-21 16:59:28
C/C++
for( int i = 0; i < ile; i++ ) {
    a: //!
    cin >> t[ i ];
    bool czylicz = cin.good();
    cin.clear();
    cin.sync();
    switch( czylicz )
    {
    case 0:
        cout << "Wprowadzaj liczby zeczywiste!!" << endl;
        goto a; //!
        break;
    default:
        break; //!
    }
}

zauważyłeś, że to bez sensu?
C/C++
for( int i = 0; i < ile; i++ ) { //zwiększamy
    cin >> t[ i ];
    bool czylicz = cin.good();
    cin.clear();
    cin.sync();
    if( czylicz == 0 ) {
        cout << "Wprowadzaj liczby zeczywiste!!" << endl;
        --i; //cofamy..
    }
}
tak nie prościej?

C/C++
float oceny( float t[] )
po co ta funkcja coś zwraca skoro i tak wywalasz zawsze 0?

C/C++
cin >> t[ i ];
oceny( t );
wczytujesz element, wypełniasz całość, itd?

Popatrz na to, przeanalizuj, porównaj ze swoim, popraw błędy.
C/C++
#include <iostream>

int main() {
    float sum = 0.0, tmp;
    int n = 0;
    std::cout << "zapodaj dane (0 konczy)\n";
    do {
        std::cin >> tmp;
        if( !std::cin.good() ) {
            std::cout << "are you f*cking kidding me?\n";
            std::cin.clear();
            std::cin.sync();
            tmp = 123; //magia, nie ruszac :P
            continue;
        }
        if( tmp != 0 ) {
            sum += tmp;
            ++n;
        }
    } while( tmp != 0 );
   
    std::cout << "srednia: " << sum / n;
}
P-41244
Crassus
Temat założony przez niniejszego użytkownika
Ok
» 2011-09-22 09:33:55
Wielkie dzieki za wskazanie wlasciwej drogi szacun i pozdro. Niepotrzebnie weszlem w te funkcje, nie takie bylo zadanie.
P-41264
1 « 2 »
Poprzednia strona Strona 2 z 2