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

wskazanie która z 5 liczb jest bliższa ich średniej arytmetycznej przy użyciu wskaźników

Ostatnio zmodyfikowano 2014-12-19 13:07
Autor Wiadomość
joinzbozin
Temat założony przez niniejszego użytkownika
wskazanie która z 5 liczb jest bliższa ich średniej arytmetycznej przy użyciu wskaźników
» 2014-12-15 23:38:23
C/C++
#include<iostream>
using namespace std;
void podawanie( double * wsk, double & srednia )
{
    double suma = 0;
    for( int i = 0; i < 5; i++ )
    {
        cout << "podaj liczbe";
        cin >>* wsk;
        suma +=* wsk;
        wsk++;
    }
    srednia = suma / 5;
    cout << "srednia=" << srednia << endl;
}
double liczenie( double * wsk, double srednia )
{
    double wynik = 0;
    double roznica = 0;
    for( int i = 0; i < 5; i++ )
    {
        cout <<* wsk;
       
        if( * wsk > srednia )
             roznica =( * wsk ) - srednia;
        else roznica = srednia -( * wsk );
       
        if( roznica >= wynik )
             wynik =( * wsk );
       
        wsk++;
    }
    return wynik;
}
double srednia( double * tab )
{
   
}
int main()
{
    double tab[ 10 ];
    double * wsk = tab;
    double srednia;
   
    podawanie( wsk, srednia );
    cout << liczenie( wsk, srednia );
   
   
}
Proszę o odpowiedż dlacze program nie wskazuje poprawnej liczby?
P-122923
darko202
» 2014-12-16 11:28:24
problem tkwi w linii
 
if( roznica >= wynik )
  wynik =( * wsk ); // bieżąca wartość wskaźnika 1,2,3,4 lub 5
....
return wynik;
 

P-122933
Tomek_z_W11
» 2014-12-16 21:44:32
Moim zdanie błąd jest w tym miejscu:

C/C++
wsk++;
//powinno być
( * wsk ) ++;
P-122970
Monika90
» 2014-12-17 11:56:11

Moim zdanie błąd jest w tym miejscu:

wsk++;
//powinno być
( * wsk ) ++;
Akurat to było dobrze.

Warunek w tej instrukcji
if( roznica >= wynik )
 jest błędny, początkowa wartość zmiennej roznica też nie jest dobra. Zastanów się nad prawidłowym algorytmem.

Warto też żebyś zapoznał się z funkcją abs z <cmath>.
P-122990
Tomek_z_W11
» 2014-12-19 08:59:44
Jakim cudem wsk++ jest dobrze? Czy to nie jest wskaźnik przypadkiem? Przecież wtedy będzie wskazywać na następną komórkę w pamięci, która przechowuje zupełnie inną wartość.
P-123098
Monika90
» 2014-12-19 12:59:10
Nie będzie wskazywał na następną komórkę pamięci, tylko na następny element tablicy, i o to właśnie chodzi, przegląda się kolejne elementy tablicy by znaleźć ten najbliższy średniej.
P-123103
Tomek_z_W11
» 2014-12-19 13:07:00
No tak. Faktycznie. Mój błąd.
P-123104
« 1 »
  Strona 1 z 1