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 |