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 » |