Tablice dynamiczne
Ostatnio zmodyfikowano 2014-04-07 21:33
yerpy Temat założony przez niniejszego użytkownika |
Tablice dynamiczne » 2014-04-07 14:33:40 Witam ( dopiero się uczę ), mam problem, po skompilowaniu programu, po podaniu rozmiarów tablic wywala mi konsole, prawdopodobnie coś w funkcji jest źle zrobione, a raczej jej wywołanie;/ nie mam pomysłu jak to naprawić, by dobrze śmigało, funkcja " przekazywanie" ma mnożyć i-te elementy dwóch tablic przez siebie i wpisywać je do 3 tablicy. Zamieszczam kod w linku. #include <iostream> void przekazywanie( double *, double *, double *, int * ); void kreator_tablicy( double *, int * ); using namespace std; int main() { int rozmiar, rozmiar1, rozmiar2; if( rozmiar > rozmiar1 ) rozmiar2 = rozmiar - rozmiar1; else rozmiar2 = rozmiar1 - rozmiar; double * tab1 = NULL; kreator_tablicy( tab1, & rozmiar ); cout << '\n'; double * tab2 = NULL; kreator_tablicy( tab2, & rozmiar1 ); double * tab3 = NULL; tab3 = new double[ rozmiar ]; cout << '\n'; przekazywanie( tab1, tab2, tab3, & rozmiar2 ); cout << '\n'; delete[] tab1; delete[] tab2; delete[] tab3; } void przekazywanie( double * tab1, double * tab2, double * tab3, int * rozmiar2 ) { for( int i = 0; i < * rozmiar2; i++ ) { tab3[ i ] = tab1[ i ] * tab2[ i ]; cout << tab3[ i ] << " "; } } void kreator_tablicy( double * tab, int * rozmiar ) { cout << "\nPodaj ile elementow ma miec tablica :\n "; cin >> * rozmiar; tab = new double[ * rozmiar ]; for( int i = 0; i < * rozmiar; i++ ) { tab[ i ] = i; cout << tab[ i ] << " "; } }
|
|
alixir |
» 2014-04-07 14:44:14 1. Umieszczaj kod na forum pomiędzy znacznikami [cpp][/cpp] 2. Na początku program porównujesz i przypisujesz niezainicjowane zmienne co powoduje wysypanie się programu. |
|
yerpy Temat założony przez niniejszego użytkownika |
» 2014-04-07 15:06:03 Program już się nie wysypuje, ale w ciele funkcji przekazywanie for w ogóle nie chodzi, podejrzewam, że problemem jest 2 argument "i < *rozmiar2 " |
|
alixir |
» 2014-04-07 21:33:17 Jeśli chcesz to robić po swojemu to zmodyfikuj nagłówki funkcji, bo obecnie nie zwracasz nawet utworzonych tablic: void przekazywanie( double *, double *, double *&, int * ); void kreator_tablicy( double *&, int * ); oraz przenieś zmodyfikowany kod z początku: if( rozmiar > rozmiar1 ) rozmiar2 = rozmiar1; else rozmiar2 = rozmiar; przed instrukcję: double * tab3 = NULL; i nie zapomnij zmienić tab3 = new double[ rozmiar2 ]; resztę pozostawiając bez zmian. |
|
« 1 » |