Tablice struktur - problem z przypisaniem do tablicy
Ostatnio zmodyfikowano 2017-02-01 10:55
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ć? |
|
michal11 |
» 2017-01-31 20:08:29 struct S { };
int main() { S tab[ 3 ]; return 0; }
tak powinien wyglądać szkielet tego programu. |
|
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... |
|
carlosmay |
» 2017-01-31 20:11:28 struct foo { };
std::array < foo, 3 > foofoos; foofoos[ 0 ] = foo( args ); foofoos[ 1 ] = foo( args );
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. |
|
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? |
|
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*. |
|
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ę? |
|
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'. |
|
« 1 » 2 |