• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd wyświetlenia programu (C++)

Object Storage Arubacloud
0 głosów
154 wizyt
pytanie zadane 9 września 2017 w C i C++ przez Sic Dyskutant (8,510 p.)

Witam!

Program ma błąd podczas wyświetlenia.

#include <string>
#include <cstring>
#ifndef szczegoly_H_
#define szczegoly_H_

class szczegoly
{
public:
	struct salon
	{
		std::string auto1;
		char model[30];
		double predkosc = 0;
	};
	void dane();
};
#endif

void szczegoly::dane()
{
	szczegoly obiekt;
	szczegoly::salon informacje[3];
	std::cout << "Nazwy trzech samochodow do porownania\n";
	std::getline(std::cin, informacje[0].auto1); std::getline(std::cin, informacje[1].auto1); std::getline(std::cin, informacje[2].auto1); //wejscie za pomoca string
	std::cout << "Model pierwszego samochodu\n";
	std::cin >> informacje[0].model;
	std::cout << "Predkosc_max pierwszego samochodu\n";
	std::cin >> informacje[0].predkosc;
	std::cout << "Model drugiego samochodu\n";
	std::cin >> informacje[1].model;
	std::cout << "Predkosc_max drugiego samochodu\n";
	std::cin >> informacje[1].predkosc;
	std::cout << "Model trzeciego samochodu\n";
	std::cin >> informacje[2].model;
	std::cout << "Predkosc_max trzeciego samochodu\n";
	std::cin >> informacje[2].predkosc;
}


plik.cpp

#include <iostream> // napisach go jak najkrocej metodami ktore znam!
#include <string>
#include <cstring>
#include <conio.h>
#include "auta1.h"
int main()
{		
	szczegoly obiekt;
	szczegoly::salon informacje[3];
	obiekt.dane();
	std::cout << informacje[0].auto1 << ";" << informacje[0].model << ";" << informacje[0].predkosc << std::endl;
	std::cout << informacje[1].auto1 << ";" << informacje[1].model << ";" << informacje[1].predkosc << std::endl;
	std::cout << informacje[2].auto1 << ";" << informacje[2].model << ";" << informacje[2].predkosc << std::endl;

	double total =  (informacje[0].predkosc + informacje[1].predkosc + informacje[2].predkosc) / 3;
	std::cout<< std::endl <<"Srednia predkosc: "<< total << '\n';

	strcat(informacje[1].model, " \"wersja limitowana\" ");  //dodanie dodatkowego tekst do lancucha!f
	std::cout << informacje[1].model;
	getch();
	return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 9 września 2017 przez niezalogowany
wybrane 9 września 2017 przez Sic
 
Najlepsza

Czemu struktura salon nazywa się salon, a nie samochód? Czemu szczegóły to szczegóły, a nie salon? Najprościej będzie przenieść tablicę "salonów" do klasy "szczegóły". Działający kod:


#include <iostream> // napisach go jak najkrocej metodami ktore znam!
#include <string>
#include <cstring>
#include <exception>
#include <conio.h>

class szczegoly
{
public:
	struct salon
	{
		std::string auto1;
		char model[30];
		double predkosc = 0;
	};

	salon informacje[3];

	void dane();
};


void szczegoly::dane()
{
	std::cout << "Nazwy trzech samochodow do porownania\n";
	std::getline(std::cin, informacje[0].auto1); 
	std::getline(std::cin, informacje[1].auto1); 
	std::getline(std::cin, informacje[2].auto1); //wejscie za pomoca string
	std::cout << "Model pierwszego samochodu\n";
	std::cin >> informacje[0].model;
	std::cout << "Predkosc_max pierwszego samochodu\n";
	std::cin >> informacje[0].predkosc;
	std::cout << "Model drugiego samochodu\n";
	std::cin >> informacje[1].model;
	std::cout << "Predkosc_max drugiego samochodu\n";
	std::cin >> informacje[1].predkosc;
	std::cout << "Model trzeciego samochodu\n";
	std::cin >> informacje[2].model;
	std::cout << "Predkosc_max trzeciego samochodu\n";
	std::cin >> informacje[2].predkosc;
}


int main()
{
	szczegoly obiekt;
	obiekt.dane();

	std::cout << obiekt.informacje[0].auto1 << ";" << obiekt.informacje[0].model << ";" << obiekt.informacje[0].predkosc << std::endl;
	std::cout << obiekt.informacje[1].auto1 << ";" << obiekt.informacje[1].model << ";" << obiekt.informacje[1].predkosc << std::endl;
	std::cout << obiekt.informacje[2].auto1 << ";" << obiekt.informacje[2].model << ";" << obiekt.informacje[2].predkosc << std::endl;


	double total = (obiekt.informacje[0].predkosc + obiekt.informacje[1].predkosc + obiekt.informacje[2].predkosc) / 3.;
	std::cout << std::endl << "Srednia predkosc: " << total << '\n';

	strcat(obiekt.informacje[1].model, " \"wersja limitowana\" ");  //dodanie dodatkowego tekst do lancucha!f
	std::cout << obiekt.informacje[1].model;
	
	getch();
	return 0;
}

Tylko nadal wygląda do słabo i okropnie. Lepiej byłoby zrobić to dynamicznie (albo z użyciem std::vector), pozmieniać nazwy. Dodaj osobną funkcję do przypisywania wartości etc.

komentarz 9 września 2017 przez Sic Dyskutant (8,510 p.)
Dziękuję za pomoc, szukałem tego błędu.

Podobne pytania

–1 głos
0 odpowiedzi 118 wizyt
+1 głos
1 odpowiedź 282 wizyt
pytanie zadane 12 kwietnia 2015 w C i C++ przez ziemjok Gaduła (4,160 p.)

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...