Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Siwolong

Problem z programem który pomija wpisywanie łańcucha

Rekomendowane odpowiedzi

Hej. Mam problem z rozwiązaniem zadania:

 

Zaprojektuj strukturę car zawierającą następujące informacje o samochodzie: markę jako tablicę znakową lub obiekt string, rok budowy jako liczbę całkowitą. Napisz program który spyta użytkownika o liczbę katalogowanych aut. Następnie za pomocą operatora new stwórz dynamiczną tablice struktur car, poproś użytkownika o podanie marki (może mieć więcej niż jedno słowo) oraz o rok. Należy zachować tu ostrożność, gdyż na zmianę odczytujemy łańcuchy znakowe i liczby. Na koniec wyświetl zawartości wszystkich struktur. Oto przykładowy przebieg sesji z programem:

 

 

 

Ile samochodów chcesz skatalogować? 2

Samochód #1:

Proszę podać markę: Hudson Hornet

Rok produkcji: 1952

Samochód #2:

Proszę podać markę: Kaiser

Rok produkcji: 1951

1952 Hudson Hornet

1951 Kaiser

 

Po wpisaniu liczby samochodów do skatalogowania program automatycznie przeskakuje do wprowadzenia roku produkcji, pomijając wprowadzenie marki samochodu.

Jeszcze jedna sprawa, powinienem użyć operatora strzałki zamiast kropki ?

#include <iostream>
#include <string>
using namespace std;

struct car
{
string brand;
int year;
};

int main()
{
int ile;
cout << "Ile samochodow chcesz skatalogowac? ";
cin >> ile;
car * p = new car[ile];
for (int i = 0; i < ile; i++)
{
	cout << "Samochod #" << i+1 << endl;
	cout << "Prosze podac marke: ";
	getline(cin, p[i].brand);
	cout << "Podaj rok produkcji: ";
	cin >> p[i].year;
}
for (int i = 0; i < ile; i++)
{
	cout << p[i].brand << " " << p[i].year << endl;
}
delete [] p;
system("pause");
return 0;
}

 

Liczę na waszą pomoc

Pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

czemu używasz getline?

Żeby móc wpisać więcej niż jedno słowo.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ogólnie musisz wyczyścić strumień. Mój link

#include <iostream>
#include <string>
using namespace std;

struct car
{
       string brand;
       int year;
};

int main()
{
       int ile;
       cout << "Ile samochodow chcesz skatalogowac? ";
       cin >> ile;
       car * p = new car[ile];
       for (int i = 0; i < ile; i++)
       {
           cin.clear();
           cin.sync();
               cout << "Samochod #" << i+1 << endl;
               cout << "Prosze podac marke: ";
               getline(cin, p[i].brand);
               cout << "Podaj rok produkcji: ";
               cin >> p[i].year;
       }
       for (int i = 0; i < ile; i++)
       {
               cout << p[i].brand << " " << p[i].year << endl;
       }
       delete [] p;

       return 0;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
#include <iostream>
#include <string>

// Załączona biblioteka <limits> dla std::numeric_limits
#include <limits>

struct car
{
   // Deklaracja i inicjowanie zmiennych według C++11, początkowa wartość 0, tak aby nie było przypisanego śmietnika
   // inaczej std::string brand = 0;
   std::string brand {}; 
   int year {};
};

int main(){

   // Deklaracja i inicjowanie zmiennych wedłyg C++11, początkowa wartość 0, tak aby nie było przypisanego śmietnika   
   int ile {};

   std::cout << "Ile samochodow chcesz skatalogowac? ";
   std::cin >> ile;

   car* p = new car[ile];

   for(int i = 0; i < ile; i++)
   {
           // wyczyszczenie strumienia wejściowego
           std::cin.clear();

           /* Ignorowanie strumienia wejściowego aż do napotkania znaku nowej linii ('enter') lub EOF. 
            *  Linia std::numeric_limits<std::streamsize>::max() określa, ile znaków ma zostać zignorowanych, czyli                
            *  w tym przypadku maksymalna możliwa.

            Źródło:            
            http://www.cplusplus.com/reference/istream/istream/ignore/
            http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Obsluga-strumienia-wejsciowego/12
            * */
           std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

           std::cout << "Samochod #" << i+1 << std::endl;

           std::cout << "Prosze podac marke: ";            
           std::getline(std::cin, p[i].brand);

           std::cout << "Prosze podac rok: ";
           std::cin >> p[i].year;
   }

   for(int i = 0; i < ile; i++)
   {   
       // Inaczej masz w Zadaniu!
       std::cout << p[i].year << " " << p[i].brand << std::endl;
   }    

   delete [] p;

   return 0;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

  • Tematy

  • Odpowiedzi

    • I tak x1000000000000000 na świecie typów bezmyślnych, którzy uważają podobnie i niedługo będziemy mieli tylko abonamenty bez żadnego wyboru. Tyle mam do powiedzenia w tej sprawie...  
    • Nie wiedziałem, myślałem, że trzeba dać mu kasę ze opowiadanie historyjek, które otworzą kolejny quest, ale po jakimś czasie w ogóle nie przyjmował kasy.   Mechanik nie ma też na skradanie się. Całkowicie żenujące jest uwolnienie tego magistra. W tym więzieniu pełno straży, a i tak można przejść jak gdyby nic obok nich. Jak wspomniałem wcześniej - ta gra jest niedogotowana w wielu aspektach. Ciekawią mnie jeszcze te zasypane gruzem drzwi w niektórych jaskiniach. To pewnie także jest jakiś placeholder na dodatkową zawartość.
    • Może nie osiedla, ale te w centrach miast można by zamienić na parki. Aczkolwiek osiedla czy jakaś galeria handlowa czy garaże(to miałem u siebie naście lat temu) też wchodzą w grę.  
    • Na pewno trzeba się do wojny przygotowywać.   Współcześni europejscy generałowie mają często mizerne doświadczenie bojowe. Jeśli nawet dowodzili w Iraku to nie przygotowało ich to na wojnę rosyjsko - ukraińską. Wojna na Bałkanach też była inna. Dla mnie są wyszkolonymi teoretykami. 
    • 1. Nie bez powodu 2. Nie ma konkretnego celu, jest po prostu wyrażeniem opinii, bo krytyka poparta argumentami to też rodzaj opinii.  3. A czemu krytykuje się mniejszość? Bo jak na mniejszość, to strasznie dużo się zlatuje zwolenników Konfederacji, albo takich co niby mówią, że za nimi nie są, ale...! i to jest główna rzecz, która prowokuje takie dyskusje. Jak po kimś wiadomo że jest za Konfederacją, to można próbować dyskusji. Jak ktoś kręci bez sensu, to nie ma się co dziwić niektórym odpowiedziom.  Projekty projektami i to jeszcze cudze, ale popatrz na ich plan ogólny. Plan ogólny zakłada że każdy za wszystko będzie musiał sobie zapłacić sam. Co z tego że chcą zlikwidować większość podatków, jak trzeba będzie sobie samemu sfinansować opiekę zdrowotną, emeryturę i masę innych świadczeń i usług, które teraz ogarnia państwo. Do tego proponują system, który wspiera bogatych ładnie nazywając ich "przedsiębiorczymi".  Ogólnie bardzo blisko im do systemu amerykańskiego, który wiemy że się nie sprawdza, zarówno w służbie zdrowia jak i w polityce (mowa o wpływie korporacji na politykę poprzez np. jej finansowanie). W czym? Tylko nie pisz po raz n-ty że budują przecież elektrownie węglowe. Tak, budują, czy tam uruchamiają, ale procentowo w ujęciu krajowym i liczbie ludności dalej emitują mniej na jednego mieszkańca w sektorze energetycznym niż Polska i mają cały czas tendencję spadkową mimo uruchamiania węglówek. Zatem konkretnie. W czym oszukiwali? Może być w punktach. Pisałem już, że prowadzona jest obecnie rekrutacja. Zatem twierdzisz, że Intel który obecnie restrukturyzuje choćby dział marketingu i sprzedaży zwalniając pracowników w różnych miejscach, zatrudniałby ludzi do fabryki, która nie powstanie?  I widzisz, robisz to co prędzej czy później robi tutaj każdy Konfiarz. Tak posunąłem się do takiego stwierdzenia, bo po ostatnich wypowiedziach po prostu schemat spełniony na 100%, czyli najpierw posty o tym, że Konfederacja powinna dostać szansę, rządzić, że dobrze myśli, robi itd. (dla niepoznaki, że nie wszystko, ale...!), a potem z grubej rury, że jak ktoś się z czymś nie zgadza to platformers... Nie zgadzam się z CPK choćby dlatego, że w takim układzie trzeba było nie wydawać kasy choćby w kwocie 800 milionów zł (nie liczę kosztów dwóch poprzednich budów tego lotniska) na lotnisko w Radomiu, czy kombinować z innymi lotniskami. Tak, jestem za modernizacją kolei, ale  nie wiem czy widziałeś plany tych kolei? W wielu miejscach trasy są poprowadzone tak jakby nikt nie zwracał uwagi na to czy to ma sens, jak np. linia kolejowa pod Łodzią. Są też miejsca w których linie kolejowe mają przechodzić przez dopiero co oddane budynki. Jak podzielasz zdanie @voltq w sprawie wywłaszczenia to tym bardziej z Twojej perspektywy plan powinien być nierealny. No ale ludzie dostali pozwolenie na budowę domu, gdzie wychodzi na to, że już ktoś planował linie kolejowe, bo przecież taki pomysł nie powstał w miesiąc czy dwa, prawda? Niech to będzie robione, ale z głową, a nie "na hura".  Już Bareja takie planowanie pokazywał lata temu      
  • Aktywni użytkownicy

×
×
  • Dodaj nową pozycję...