zelek52 Temat założony przez niniejszego użytkownika |
[C++] Tablica dwuwymiarowa do funkcji » 2015-12-02 14:44:34 Witam, próbuję stworzyć program pobierający od użytkownika elementy tablicy dwuwymiarowej, a potem sumujący obie. Działał program z tablicami jednowymiarowymi, jednak po przekształceniu wysypuje kilka błędów. Używam Codeblocks. Proszę o pomoc. (PS Jeszcze nie miałem wskaźników, więc w zadaniu nie można ich użyć, jeśli się da to również nie chciałbym innych bibliotek używać.) mój kod : #include <iostream>
using namespace std;
void wczytaj_tab( int wiersz, int kolumna ); void wypisz_tab( int wiersz, int kolumna ); float suma_tab( int wiersz, int kolumna, float pierwsza[][], float druga[][] );
float tab_a[ 100 ][ 100 ]; float tab_b[ 100 ][ 100 ]; float tab_c[ 100 ][ 100 ];
int main() { int n, m; cout << "Ile wierszy maja miec obie tablice (1-100)?\n"; cin >> n; cout << "Ile kolumn maja miec obie tablice (1-100)?\n"; cin >> m; if( n > 0 && n <= 100 && m > 0 && m <= 100 ) { wczytaj_tab( n, m ); suma_tab( n, m, tab_a, tab_b ); wypisz_tab( n, m ); } else { cout << "Nieprawidlowy rozmiar !" << endl; } }
void wczytaj_tab( int wiersz, int kolumna ) { cout << "Wprowadzanie elementow do pierwszej tablicy" << endl; for( int i = 0; i < wiersz; i++ ) { for( int j = 0; j < kolumna; j++ ) { cout << "Tab_a[" << i << "][" << j << "] = "; cin >> tab_a[ i ][ j ]; } } cout << endl; cout << "Wprowadzanie elementow do drugiej tablicy" << endl; for( int i = 0; i < wiersz; i++ ) { for( int j = 0; j < kolumna; j++ ) { cout << "Tab_b[" << i << "][" << j << "] = "; cin >> tab_b[ i ][ j ]; } } }
float suma_tab( int wiersz, int kolumna, float pierwsza[][ 100 ], float druga[][ 100 ] ) { for( int i = 0; i < wiersz; i++ ) { for( int j = 0; j < kolumna; j++ ) { tab_c[ i ][ j ] = tab_a[ i ][ j ] + tab_b[ i ][ j ]; } } }
void wypisz_tab( int wiersz, int kolumna ) { cout << "wydruk pierwszej tablicy :" << endl; for( int i = 0; i < wiersz; i++ ) { for( int j = 0; j < kolumna; j++ ) { cout << "Tab_a[" << i << "][" << j << "] = "; << tab_a[ i ][ j ] << endl; } } cout << endl; cout << "wydruk drugiej tablicy :" << endl; for( int i = 0; i < wiersz; i++ ) { for( int j = 0; j < kolumna; j++ ) { cout << "Tab_b[" << i << "][" << j << "] = "; << tab_b[ i ][ j ] << endl; } } cout << endl; cout << "Suma tablic :" << endl; for( int i = 0; i < wiersz; i++ ) { for( int j = 0; j < kolumna; j++ ) { cout << "Tab_c[" << i << "][" << j << "] = "; << tab_c[ i ][ j ] << endl; } } }
błędy : mingw32-g++.exe -c "C:\Users\zelos\Desktop\programowanie\zadanie tablice.cpp" -o "C:\Users\zelos\Desktop\programowanie\zadanie tablice.o" C:\Users\zelos\Desktop\programowanie\zadanie tablice.cpp:7:60: error: declaration of 'pierwsza' as multidimensional array must have bounds for all dimensions except the first C:\Users\zelos\Desktop\programowanie\zadanie tablice.cpp:7:61: error: expected ')' before ',' token C:\Users\zelos\Desktop\programowanie\zadanie tablice.cpp:7:63: error: expected unqualified-id before 'float' C:\Users\zelos\Desktop\programowanie\zadanie tablice.cpp: In function 'void wypisz_tab(int, int)': C:\Users\zelos\Desktop\programowanie\zadanie tablice.cpp:89:55: error: expected primary-expression before '<<' token C:\Users\zelos\Desktop\programowanie\zadanie tablice.cpp:99:55: error: expected primary-expression before '<<' token C:\Users\zelos\Desktop\programowanie\zadanie tablice.cpp:111:55: error: expected primary-expression before '<<' token Process terminated with status 1 (0 minute(s), 0 second(s)) 6 error(s), 0 warning(s) (0 minute(s), 0 second(s))
|
|
Monika90 |
» 2015-12-02 14:50:24 Jeszcze nie miałem wskaźników, więc w zadaniu nie można ich użyć |
To jak bez wskaźników zrobiłeś zadanie dla tablic jednowymiarowych? |
|
zelek52 Temat założony przez niniejszego użytkownika |
Kod dla tablic jednowymiarowych » 2015-12-02 14:53:49 Wszystko się kompiluje i prawidłowo działa, więc chyba jest dobrze W taki sposób : #include <iostream>
using namespace std;
void wczytaj_tab( int n ); void wypisz_tab( int n ); float suma_tab( int n, float pier[], float dru[] );
float tab_a[ 20 ]; float tab_b[ 20 ]; float tab_c[ 20 ];
int main() { int n; cout << "Ilu elementowe maja byc tablice? 1-20" << endl; cin >> n; if( n > 0 && n <= 20 ) { wczytaj_tab( n ); suma_tab( n, tab_a, tab_b ); wypisz_tab( n ); } else { cout << "Nieprawidlowy rozmiar !" << endl; } }
void wczytaj_tab( int n ) { cout << "Wprowadzanie elementow do pierwszej tablicy" << endl; for( int i = 0; i < n; i++ ) { cout << "Tab_a[" << i << "]= "; cin >> tab_a[ i ]; } cout << endl; cout << "Wprowadzanie elementow do drugiej tablicy" << endl; for( int i = 0; i < n; i++ ) { cout << "Tab_b[" << i << "]= "; cin >> tab_b[ i ]; } }
float suma_tab( int n, float pier[], float dru[] ) { int i; for( i = 0; i < n; i++ ) { tab_c[ i ] = pier[ i ] + dru[ i ]; } }
void wypisz_tab( int n ) { int i; cout << "wydruk pierwszej tablicy :" << endl; for( i = 0; i < n; i++ ) { cout << "Tab_a[" << i << "] = " << tab_a[ i ] << endl; } cout << endl; cout << "wydruk drugiej tablicy :" << endl; for( i = 0; i < n; i++ ) { cout << "Tab_b[" << i << "] = " << tab_b[ i ] << endl; } cout << endl; cout << "Suma tablic :" << endl; for( i = 0; i < n; i++ ) { cout << "Tab_c[" << i << "] = " << tab_c[ i ] << endl; } }
|
|
carlosmay |
» 2015-12-02 14:58:58 float suma_tab( int wiersz, int kolumna, float pierwsza[][], float druga[][] );
cout << "Tab_a[" << i << "][" << j << "] = "; << tab_a[ i ][ j ] << endl;
|
|
Monika90 |
» 2015-12-02 14:58:58 Więc w tej deklaracji pier i dru to są wskaźniki, choć z pozoru nie wyglądają na wskaźniki. float suma_tab( int n, float pier[], float dru[] );
Dla tablic dwuwymiarowych możesz zrobić analogicznie, ale musisz podać drugi wymiar float suma_tab( int wiersz, int kolumna, float pierwsza[][ 100 ], float druga[][ 100 ] );
|
|
zelek52 Temat założony przez niniejszego użytkownika |
» 2015-12-02 15:05:23 więc użytkownik nie ma możliwości samemu podać wielkości drugiego i następnego wymiaru?
edit : dobra, już zrozumiałem, dziękuję bardzo za pomoc! :) |
|
carlosmay |
» 2015-12-02 15:09:16 więc użytkownik nie ma możliwości samemu podać wielkości drugiego i następnego wymiaru? |
Musisz podać wszystkie wymiary jeśli chcesz pracować na takiej tablicy. Pierwszy podajesz osobno, bo podany w deklaracji tablicy w nagłówku jest ignorowany, a każdy następny musisz zamieścić w deklaracji tablicy. |
|
zelek52 Temat założony przez niniejszego użytkownika |
» 2015-12-02 15:13:30 okej, już zrozumiałem : drugi i następny wymiar muszę podać, ale użytkownik wywołuje tylko tyle ile potrzebuje. Dziękuję za pomoc carlosmay, Monika90 ! :) |
|
« 1 » 2 |