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

Tablice struktur - problem z przypisaniem do tablicy

Ostatnio zmodyfikowano 2017-02-01 10:55
Autor Wiadomość
rojek121
Temat założony przez niniejszego użytkownika
Tablice struktur - problem z przypisaniem do tablicy
» 2017-01-31 18:06:00
Witam. Mam do napisania program.
Zdefiniuj w programie dowolną strukturę która będzie przechowywać co najmniej trzy
pola, w tym jedno tekstowe i jedno liczbowe.
W programie utwórz tablicę przechowującą obiekty powyższego typu, przy czym dwa z
nich wypełnij danymi w kodzie programu, a trzecią danymi wczytanymi od
użytkownika.
Po wczytaniu danych od użytkownika, wyświetl powyższe dane w czytelny sposób w
oknie konsoli.

Problem polega na tym, że nie rozumiem o co chodzi z tą tablicą? Mam utworzyć tablicę i do niej zapisać dane ze struktury, a następnie za pomocą tablicy je wyświetlić?
P-157172
michal11
» 2017-01-31 20:08:29
C/C++
struct S
{
    //...
};

int main()
{
    S tab[ 3 ];
   
    // wypelnij danymi
   
    // wczytaj dane od użytkownika
   
    // wypisz tablice
   
    return 0;
}

tak powinien wyglądać szkielet tego programu.
P-157174
krainamodu
» 2017-01-31 20:10:51
Musisz zrobić tablicę z elementami utworzone przez siebie struktury.
czyli np.
struct punkt
{
int x,y;
string name;
}
i w mainie robisz tablice obiektow:
punkt tab[3];
tab[0].x = 2;
tab[0].y = 3;
tab[0].name= "p1";
itd...
P-157175
carlosmay
» 2017-01-31 20:11:28
C/C++
struct foo {
    // trzy pola
};

std::array < foo, 3 > foofoos;
foofoos[ 0 ] = foo( args );
foofoos[ 1 ] = foo( args );
// bierzesz dane od usera
foofoos[ 2 ] = foo( args od usera );

Popraw temat, bo teraz wygląda jak temat artykułu opisującego struktury, a nie brak pomysły na zadeklarowanie tablicy.
P-157176
rojek121
Temat założony przez niniejszego użytkownika
» 2017-01-31 20:30:28
Okej, dzięki oto co udało mi się napisać:
#include <iostream>
#include <conio.h>
#include <cmath>
#include <stdio.h>

using namespace std;

struct sAuta
{
char marka[15];
int data_produkcji;
int pojemnosc;
};

int main()
{
sAuta tablice[3];

{
tablice[0].marka = "Volkswagen Golf";
tablice[0].data_produkcji = 2003;
tablice[0].pojemnosc = 1600;
tablice[1].marka = "Audi A3";
tablice[1].data_produkcji = 2000;
tablice[1].pojemnosc = 1800;
}

cout << "Wprowadz dane"<<endl;
cout << "Podaj marke auta: ";
cin >> tablice[2].marka;
cout << "Podaj date produkcji: ";
cin >> tablice[2].data_produkcji;
cout << "Podaj pojemnosc: ";
cin >> tablice[2].pojemnosc;


cout << "Oto rezultat wprowadzonych danych:" << endl;
for (int i = 0; i < 3; i++)
{
cout << tablice.marka;
cout << tablice.data_produkcji;
cout << tablice.pojemnosc;

}



system("pause");
return 0;
}

Jednak pokazuje mi, że źle przypisuję tablice marki, ktoś wie o co chodzi?
P-157177
michal11
» 2017-01-31 20:40:02
Albo skorzystaj ze stringa do napisów albo ze strcpy do kopiowania napisów.
tablice[ 0 ].marka = "Volkswagen Golf";
 to przypisuje adres tymczasowego obiektu (czyli. const char*) do twojego typu czyli char*.
P-157180
rojek121
Temat założony przez niniejszego użytkownika
» 2017-01-31 20:52:49
Okej, poprawione.

#include <iostream>
#include <conio.h>
#include <cmath>
#include <stdio.h>
#include <string>

using namespace std;

struct sAuta
{
string marka;
int data_produkcji;
int pojemnosc;
};

int main()
{
sAuta tablice[3];


cout << "Wprowadz dane" << endl;
cout << "Podaj marke auta: ";
getline(cin, tablice[2].marka);
cout << "Podaj date produkcji: ";
cin >> tablice[2].data_produkcji;
cout << "Podaj pojemnosc: ";
cin >> tablice[2].pojemnosc;

{
tablice[0].marka = "Volkswagen Golf";
tablice[0].data_produkcji = 2003;
tablice[0].pojemnosc = 1600;
tablice[1].marka = "Audi A3";
tablice[1].data_produkcji = 2000;
tablice[1].pojemnosc = 1800;
}




{
cout << endl;
cout << "Oto rezultat wprowadzonych danych:" << endl<<endl;
for (int i = 0; i < 3; i++)
{
cout << tablice.marka << endl;
cout << tablice.data_produkcji << endl;
cout << tablice.pojemnosc << endl<<endl;

}

}

system("pause");
return 0;
}


Jak myślicie, mogę wyświetlić dane za pomocą pętli for czy lepiej napisać oddzielną funkcję?
P-157181
krainamodu
» 2017-01-31 20:53:43
i przypominam że taki napis: "Volkswagen Golf" zajmuje 16 znaków a nie 15. Bo na końcu łańcucha znaków zawsze jest niewidoczne '/0'.
P-157182
« 1 » 2
  Strona 1 z 2 Następna strona