Materiały dodatkowe Kurs XVII i XVIII - podsumowanie zadanie 1
Ostatnio zmodyfikowano 2011-09-22 09:33
Crassus Temat założony przez niniejszego użytkownika |
» 2011-09-21 16:37:42 #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. |
|
pekfos |
» 2011-09-21 16:45:40 tyle kodu i goto?! w kursie jest goto omówione? o.O |
|
DejaVu |
» 2011-09-21 16:49:49 Sugeruję przeczytanie jeszcze raz Kurs C++. 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. |
|
Crassus Temat założony przez niniejszego użytkownika |
» 2011-09-21 16:50:40 Tak |
|
pekfos |
» 2011-09-21 16:59:28 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? for( int i = 0; i < ile; i++ ) { cin >> t[ i ]; bool czylicz = cin.good(); cin.clear(); cin.sync(); if( czylicz == 0 ) { cout << "Wprowadzaj liczby zeczywiste!!" << endl; --i; } } tak nie prościej? po co ta funkcja coś zwraca skoro i tak wywalasz zawsze 0? cin >> t[ i ]; oceny( t ); wczytujesz element, wypełniasz całość, itd? Popatrz na to, przeanalizuj, porównaj ze swoim, popraw błędy. #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; continue; } if( tmp != 0 ) { sum += tmp; ++n; } } while( tmp != 0 ); std::cout << "srednia: " << sum / n; } |
|
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. |
|
1 « 2 » |