Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Tablice wielowymiarowe do funkcji

Ostatnio zmodyfikowano 2011-05-09 15:31
Autor Wiadomość
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ś?

C/C++
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;
}
P-32876
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 ...
P-32877
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?
P-32878
dmx81
» 2011-05-08 22:30:26
C/C++
wpisz( char *** tab ); //lub
wpisz( char tab[][][] );
P-32879
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.
P-32880
dmx81
» 2011-05-08 22:47:39
dobrych rad dobrze sluchac :)
P-32881
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

C/C++
#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;
}
P-32883
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)
P-32885
« 1 » 2
  Strona 1 z 2 Następna strona