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

struktury tablice i string

Ostatnio zmodyfikowano 2017-10-12 18:09
Autor Wiadomość
Lentyl
Temat założony przez niniejszego użytkownika
struktury tablice i string
» 2017-10-12 09:40:36
Witam robiłem sobie ćwiczenie z książki język C++ szkoła programowania. Trzeba stworzyć strukturę tablice z niej później trzeba to wypisać nie używam pętli bo nie prosili wszystko jest ok do czasu przejścia do stringa [1] który się nie zapisuje kompilator przeskakuje do następnego wiersza Pytanie brzmi dlaczego? Druga kwestia  to we wcześniejszym ćwiczeniu powiedziano mi żebym zamienił kolejność nazwy z średnicą do czasu kiedy nie zamieniłem w strukturze kompilator nie działał poprawnie dlaczego myślałem, że ja mogę się odwoływać do poszczególnych części struktury jak do zmiennych "nazwa.pole struktury" może źle to robię i jest jakiś sposób za wszystkie odpowiedzi bardzo dziękuje. Ps Wiem, że pytania mogą wydać się infantylne i to zadanie także jednak zależy mi na zrozumieniu mechanizmów dziękuje.

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

struct pizza
{
    string nazwa;
    float srednica;
    float waga;
};

int main()
{

    pizza *nap = new pizza[3];


    cout<<" Podaj nazwe: ";
    getline(cin, nap->nazwa);
    cout<<" Podaj srednice: "; cin>>nap->srednica;
    cout<<" Podaj wage: "; cin>>nap->waga;

    cout<<" Podaj nazwe: ";
    getline(cin, nap[1].nazwa);
    cout<<" Podaj srednice: "; cin>>nap[1].srednica;
    cout<<" Podaj wage: "; cin>>nap[1].waga;

    cout<<" Podaj nazwe: ";
    getline(cin, nap[2].nazwa);
    cout<<" Podaj srednice: "; cin>>nap[2].srednica;
    cout<<" Podaj wage: "; cin>>nap[2].waga;

    cout<<nap->nazwa<<endl;
    cout<<nap->srednica<<endl;
    cout<<nap->waga<<endl;

    cout<<(nap+1)->nazwa<<endl;
    cout<<(nap+1)->srednica<<endl;
    cout<<(nap+1)->waga<<endl;

    cout<<(nap+2)->nazwa<<endl;
    cout<<(nap+2)->srednica<<endl;
    cout<<(nap+2)->waga<<endl;

    delete nap;


    return 0;
}
 
.
P-165664
michal11
» 2017-10-12 09:48:24
Po pierwsze ciężko się czyta to co napisałeś ponieważ nie stosujesz przecinków.
Po drugie mieszasz getline z cin, to prowadzi do błędów, albo czyść bufor albo to jakoś przerób tak aby korzystać tylko z jednej metody wczytywania danych, więcej szczegółów znajdziesz w tutejszym kursie dot. wczytywania danych ze standardowego strumienia.
P-165665
Anim
» 2017-10-12 16:26:25
dodatkowo w Twoim przypadku pamięć musisz zwolnić w następujący sposób

C/C++
delete[] nap

P-165675
nanoant20
» 2017-10-12 18:09:08
napisz sobie w każdej ostatniej linijce tam gdzie pobierasz wagę
coś takiego
(cin >> nap.waga).get();


C/C++
pizza * nap = new pizza[ 3 ];

getline( cin, nap[ 0 ].nazwa );
( cin >> nap[ 0 ].srednica ).get();
( cin >> nap[ 0 ].waga ).get();

itd...

delete[] nap;
P-165677
« 1 »
  Strona 1 z 1