greenhouse Temat założony przez niniejszego użytkownika |
Tablice wielowymiarowe do funkcji » 2011-05-08 22:01:32 Hej co jest tutaj źle? Kompilator wywala błąd "invalid types 'char [int]' for array subscript" w każdej linijce cin >> tab. Nie wiem za bardzo o co chodzi, pomoże ktoś?
void wpisz( char tab[], int iOs ) { for( int i = 0; i < iOs; i++ ) { cout << " Osoba " << i + 1 << ": " << endl; cout << "Imie: "; cin >> tab[ i ][ 0 ]; cout << "Nazwisko: "; cin >> tab[ i ][ 1 ]; cout << "Nr tel: "; cin >> tab[ i ][ 2 ]; cout << "Uwagi: "; cin >> tab[ i ][ 3 ]; } } int main() { int iOs = IleOs(); char tab[ iOs ][ 4 ][ 40 ]; wpisz( tab, iOs ); getch(); return 0; }
|
|
dmx81 |
» 2011-05-08 22:19:44 uzywasz roznowymiarowych tablic, raz tab[], raz tab[][], a raz tab [][][]...
wpisz() oczekuje tablicy jednowymiarowej, ty chcesz w niej wypelniac dwuwymiarowa tablice, a w main jako argument przekazujesz 3-wymiarowa ... |
|
greenhouse Temat założony przez niniejszego użytkownika |
» 2011-05-08 22:27:18 A jak sprawić, żeby funkcja wpisz() oczekiwala 3-wymiarowej tablicy? |
|
dmx81 |
» 2011-05-08 22:30:26 wpisz( char *** tab ); wpisz( char tab[][][] ); |
|
DejaVu |
» 2011-05-08 22:37:38 Moją radą jest nie pakować się w tablice wielowymiarowe zważywszy na fakt, że raczej jesteś początkującym programistą. Do tego co chcesz osiągnąć znacznie lepsze byłyby struktury i jednowymiarowa tablica. |
|
dmx81 |
» 2011-05-08 22:47:39 dobrych rad dobrze sluchac :) |
|
greenhouse Temat założony przez niniejszego użytkownika |
» 2011-05-08 23:01:21 No ja wiem, że mógłbym napisać ten program nie używając takiej tablicy:)
Jednak jako że robię to zadanie tylko i wyłącznie dla siebie i poprawy własnych umiejętności, to staram się wprowadzić element, którego jeszcze nigdy nie używałem, żeby w przyszłości nie popełniać tak żenujących błędów, jakie robię teraz:)
Ciągle nie działa, w tej postaci występują trzy błędy w linijce 15 - void wpisz(char tab[][][], int iOs). Jak ktoś będzie miał chwilę, to będę wdzięczny za pokazanie moich błędów używając poniższego kodu
#include <iostream> #include <conio.h>
using namespace std;
int IleOs() { int a; cout << "Podaj ile osob ma byc w skoroszycie: "; cin >> a; cout << "Podano liczbe " << a << ". " << "Wprowadz dane: " << endl; return a; } void wpisz( char tab[][][], int iOs ) { for( int i = 0; i < iOs; i++ ) { cout << " Osoba " << i + 1 << ": " << endl; cout << "Imie: "; cin >> tab[ i ][ 0 ][ 40 ]; cout << "Nazwisko: "; cin >> tab[ i ][ 1 ][ 40 ]; cout << "Nr tel: "; cin >> tab[ i ][ 2 ][ 40 ]; cout << "Uwagi: "; cin >> tab[ i ][ 3 ][ 40 ]; } }
int main() { int iOs = IleOs(); char tab[ iOs ][ 4 ][ 40 ]; wpisz( tab[][][], iOs ); getch(); return 0; }
|
|
dmx81 |
» 2011-05-08 23:05:36 w main w funkcji wpisz,przy tab juz nie podawaj [][][], bo kompilator juz wie, ze tab to tablica 3-wymiarowa, uzyj tylko nazwy(identyfikatora tab) |
|
« 1 » 2 |