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
Materiały dodatkowe Kurs XVII i XVIII - podsumowanie zadanie 1
» 2011-09-21 14:40:39
Witam jest takie zadanie: Napisz program obliczający średnią Twoich ocen ze świadectwa(indeksu). Program ma pobierać tak długo liczby, aż podasz liczbę zero. Program ma posiadać funkcję sprawdzającą czy podany dane są liczbami, czyli ma zapobiegać uszkodzenia strumienia wejściowego.Nie wiem jak zrobic ostatnia rzezcz mianowicie doprowadzic do zaprzestania wprowadzania ocen przy wprowadzeniu 0, probowalem roznych sposobow, poprawcie, doradzcie. A to mój kod:

C/C++
#include<iostream>
#include<conio.h>
#include<cmath>

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 ];
        //float *wsk = &t[i];
        //t[i];
        //cin>>t[i];
        //cout<<t[i];
        //cout<<*wsk;
        bool czylicz = cin.good();
        cin.clear();
        cin.sync();
        switch( czylicz )
        {
        case 0:
            cout << "Wprowadzaj liczby zeczywiste!!" << endl;
            goto a;
            break;
        default:
            break;
        }
        //return *wsk;
    }
   
    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()
{
    float k[ 10 ];
    //float *i = &k[10];
    //float i;
    cout << "Program przyjmuje oceny do podania 0," << endl;
    cout << "co konczy wprowadzanie i powoduje podanie sredniej" << endl;
   
    //do{
    //cin>>k[i];
    oceny( k );
    //cout<<wsk;
    //cout<<i;
    //}while(*i != '0');
    srednia( k );
   
   
    getch();
    return 0;
}
P-41231
DejaVu
» 2011-09-21 14:44:58
Użyj pętli do ... while
P-41232
Crassus
Temat założony przez niniejszego użytkownika
Odp
» 2011-09-21 15:04:49
No dobra tak tez robilem, ale wpisuje 0 i moge dalej wpisywac, czy potrzebna mi jakas zm,pomocnicz, czy cos, warunek while(k != 0)czy wskaznik czy cokolwiek innego nie pomaga. Chyba sie zawiesilem, prosze o sugestie, bede wdzienczny.


C/C++
int main()
{
   
    float k[ 10 ];
    //float *i = &k[10];
    //float i;
    cout << "Program przyjmuje oceny do podania 0," << endl;
    cout << "co konczy wprowadzanie i powoduje podanie sredniej" << endl;
   
    do {
        //cin>>k[i];
        oceny( k );
        //cout<<wsk;
        //cout<<i;
    } while( * k != '0' );
   
    srednia( k );
   
   
    getch();
    return 0;
}


Nie stety nie rozumiem co ma Pan na mysli, w takim układzie program konczy przyjmowanie 10 ocen po czym ponawia komunikat i zapisuje tab od nowa. Prosze wyjasnic gdzie to 48 mam wpisac.

Po wypelnieniu tablicy samymi 48 wyszla srednia 48 i petla sie zakonczyla, wiem ze cyfra 0 na klaw. ma kod ASCII 48, ale dalej nie kapuje, jak rozwiazac problem i dlaczego program tak sie zachowal, wszak po odstawieniu w warunku konczacym z *k != '0' na *k != 0 dalej nie ma spodziewanego efektu....
P-41233
DejaVu
» 2011-09-21 15:23:59
Wpisz 48 przy takim kodzie i zobacz czy pętla została zakończona. Później zastanów się dlaczego :)

/edit:
Wpisz przy wprowadzaniu oceny wartość 48 zamiast 0.
P-41234
Crassus
Temat założony przez niniejszego użytkownika
Odp2
» 2011-09-21 16:02:02
Po wypelnieniu tablicy samymi 48 wyszla srednia 48 i petla sie zakonczyla, wiem ze cyfra 0 na klaw. ma kod ASCII 48, ale dalej nie kapuje, jak rozwiazac problem i dlaczego program tak sie zachowal, wszak po odstawieniu w warunku konczacym z *k != '0' na *k != 0 dalej nie ma spodziewanego efektu....Nawet jak zrobie *k != '48'???
Prosze podac jakies blizsze rozwiazaniu info.
P-41236
DejaVu
» 2011-09-21 16:11:43
'0' <= znak => kod znaku = 48
0 <= cyfra
P-41237
Crassus
Temat założony przez niniejszego użytkownika
Odp3
» 2011-09-21 16:16:54
W dalszym ciagu nie mam pojecia jak sie do tego zabrac, k!=0 nic nie daje, prosze o czysta sciagawke, zapamietam to na dlugo......;) Podejrzewam ze czegos mi tu brakuje ale czego?
P-41238
DejaVu
» 2011-09-21 16:22:37
C/C++
float xxx;
do
{
    std::cin >> xxx;
} while( xxx != 0 );
P-41239
« 1 » 2
  Strona 1 z 2 Następna strona