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

question-closed Dynamiczna tablica struktur, problem

0 głosów
55 wizyt
pytanie zadane 21 sierpnia w C i C++ przez amtrax Użytkownik (540 p.)
zamknięte 21 sierpnia przez amtrax

Cześć , 
próbując wykonać jedno z zadań z książki Stephena Prata, natrafiłem na następujący problem.
Moim zadaniem jest dynamicznie za alokować tablice struktur. Jednak program wypisuje błąd. Proszę o pomoc i wyrozumiałość, dopiero zaczynam przygodę z programowaniem ;)
Pozdrowienia 

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

struct batonik
{
    string nazwa;
    int waga;
    float kcal;
};


int main()
{

batonik *ws=new batonik[3];

cout<<"Podaj nazwe, wage i ilosc kcal w batoniku: ";
cin>>ws->nazwa[0]>>ws->waga[0]>>ws->kcal[0];


delete[]ws;

 

komentarz zamknięcia: problem rozwiazano

1 odpowiedź

+1 głos
odpowiedź 21 sierpnia przez tkz Mądrala (6,460 p.)
wybrane 25 sierpnia przez amtrax
 
Najlepsza
Indeksujesz coś co nie jest tablicą.
komentarz 21 sierpnia przez fisker Obywatel (1,200 p.)
edycja 21 sierpnia przez fisker
no te zera w złym miejscu stoją.

edit :: ws[0]->name, ładniej to wygląda
komentarz 21 sierpnia przez amtrax Użytkownik (540 p.)
Niestety dalej nie w tym problem
1
komentarz 21 sierpnia przez tkz Mądrala (6,460 p.)

cpp.sh/7p3go


#include <iostream>
#include<string>
using namespace std;
 
struct batonik
{
    string nazwa;
    int waga;
    float kcal;
};
 
 
int main()
{
 
batonik *ws=new batonik[3];
 
cout<<"Podaj nazwe, wage i ilosc kcal w batoniku: ";
cin>>ws[0].nazwa>>ws[0].waga>>ws[0].kcal;
cout<<ws[0].nazwa<<ws[0].waga<<ws[0].kcal; //używasz kropki, nie strzałki
//https://stackoverflow.com/questions/1238613/what-is-the-difference-between-the-dot-operator-and-in-c
 
delete[]ws;

}

 

1
komentarz 21 sierpnia przez tangarr Nałogowiec (38,440 p.)

ws jest wskaźnikiem
ws[index] referencją na obiekt
zamiast operatora wyłuskania -> należy użyć operatora kropki . (tak się to chyba nazywa).

 

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

struct batonik
{
    string nazwa;
    int waga;
    float kcal;
};


int main()
{
        batonik *ws=new batonik[3];
        cout<<"Podaj nazwe, wage i ilosc kcal w batoniku: ";
        cin>>ws[0].nazwa >> ws[0].waga >> ws[0].kcal;
        delete[]ws;
}

 

komentarz 21 sierpnia przez fisker Obywatel (1,200 p.)

@amtrax,

a fakt powinno być (ws+0)->name;

Podobne pytania

0 głosów
2 odpowiedzi 226 wizyt
pytanie zadane 3 lipca 2018 w C i C++ przez qlucha Obywatel (1,790 p.)
0 głosów
1 odpowiedź 98 wizyt
pytanie zadane 19 listopada 2018 w C i C++ przez Roman1212 Początkujący (370 p.)
0 głosów
1 odpowiedź 88 wizyt
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

66,451 zapytań

113,207 odpowiedzi

239,680 komentarzy

46,704 pasjonatów

Przeglądających: 274
Pasjonatów: 13 Gości: 261

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...