problem z referencjami i wskaznikami
Ostatnio zmodyfikowano 2017-01-26 14:48
rojek121 Temat założony przez niniejszego użytkownika  | 
problem z referencjami i wskaznikami » 2017-01-25 20:38:09 Witam. Mam do napisania program w którym zdefiniowana zostanie 10-elementowa tablica. Należy zaimplementować menu z możliwością wyboru następujących opcji: 1. Wyświetlenie zmiennych z tablicy. 2. Wypełnienie tablicy wartościami losowymi z przedziału 0-100 3. Wyświetlenie średniej harmonicznej tablicy (można wykorzystać funkcję stworzoną na poprzednich laboratoriach). 4. Znajdowanie elementu podobnego. Podprogram wczytuje liczbę od użytkownika, a następnie znajduje w tablicy wartość najbardziej zbliżoną do niej i ją wyświetla.  5. Sortowanie tablicy – można do tego celu wykorzystać sortowanie bąbelkowe lub dowolny algorytm sortujący. Wszystkie podprogramy menu, zapisać w oddzielnych funkcjach. Do funkcji należy przekazywać tablicę oraz pozostałe niezbędne argumenty. Utknalem na sredniej harmonicznej. Chodzi o to ze program nie chce mi wczytac tablicy z podpunktu 2 i wyliczyc z niego sredniej. Jakies rady? Z gory dziekuje za pomoc. #include <iostream> #include <cmath> #include <stdlib.h> #include <time.h>
  using namespace std;
  void zmienne( float * tab ) {     cout << "Zmienne w tablicy: ";     for( int i = 0; i < 10; i++ )     {         cout << tab[ i ] << ", ";     }     cout << endl; }
  void losowe( float * tab2 ) {          int liczba;     srand( time( NULL ) );     for( int i = 0; i < 10; i++ )     {         liczba = rand() % 101;         tab2[ i ] = liczba;     }     for( int i = 0; i < 10; i++ )          cout << tab2[ i ] << " ";      }
  void srednia( float tab2[ 10 ], float & wynik ) {     float suma, suma2 = 0;     for( int i = 0; i < 10; i++ )     {         suma = 1.0 / tab2[ i ];         suma2 += suma;     }     wynik = 10.0 / suma2;      }
  int main() {          float tab[ 10 ];     cout << "Podaj wartosci, ktore mam wpisac do tablicy: ";     for( int i = 0; i < 10; i++ )     {         cin >> tab[ i ];     }     system( "cls" );          cout << "MENU:" << endl;     cout << "Wybierz opcje :" << endl;     cout << " 1 - Wyswietlanie zmiennych tablicy" << endl;     cout << " 2 - Wartosci losowe" << endl;     cout << " 3 - Srednia harmoniczna" << endl;     cout << " 4 - Znajdowanie elementu podobnego" << endl;     cout << " 5 - Sortowanie tablicy" << endl;     cout << " x - Wyjscie" << endl;     char a;     cin >> a;     switch( a ) {     case '1': {             {                 zmienne( tab );             }             system( "pause" );             return 0;         }     case '2': {                          float tab2[ 10 ];             losowe( tab2 );                          system( "pause" );             return 0;         }     case '3': {             float wynik;             float tab2[ 10 ];                          srednia( tab2, wynik );             cout << wynik;                          system( "pause" );             return 0;         }     case '4': {                          system( "pause" );             return 0;         }     case '5': {                          system( "pause" );             return 0;         }     case 'x': case 'X':         {             return 0;         }     } }
   | 
 | 
latajacaryba  | 
» 2017-01-25 22:25:01 wstawiaj kod w znaczniki   [cpp]kod[/cpp]  void srednia( float tab2[ 10 ], float & wynik ) {     float suma, suma2 = 0;     for( int i = 0; i < 10; i++ )     {         suma = 1.0 / tab2;          suma2 += suma;     }     wynik = 10.0 / suma2; }
  TU - wydaje mi się,że tu możesz mieć błąd. Chyba chodziło Ci o  tab2[ i ] ? Nie wgłebiałem się w kod, ale to jako pierwsze rzuca się w oczy. Na marginesie - po co przesyłasz wynik, skoro i tak nic nie zczytujesz z niego, a jedynie zapisujesz wartość, zupełnie niezależną od tego co wcześniej w nim było? Ja bym to zrobił tak: float srednia( float tab2[ 10 ] )  {     float suma, suma2 = 0;     for( int i = 0; i < 10; i++ )     {         suma = 1.0 / tab2[ i ];         suma2 += suma;     }     float wynik = 10.0 / suma2;     return wynik; }
   | 
 | 
mateczek  | 
» 2017-01-26 14:48:28 case '3': {     float wynik;                    srednia( tab, wynik );      cout << wynik;               return 0; }  | 
 | 
|  « 1 »  |