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

tablice dynamiczne i struktury

Object Storage Arubacloud
0 głosów
318 wizyt
pytanie zadane 5 maja 2020 w C i C++ przez Atman Użytkownik (810 p.)

Moje zadanie brzmi: "Utwórz strukturę o nazwie student, która przechowuje następujące dane: imię, nazwisko, numer indeksu, średnia. Utwórz pięć obiektów struktury student i wypełnij wszystkie pola danymi. Stwórz dwie tablice zawierające tych pięć obiektów: z pamięcią alokowaną statycznie i pamięcią alokowaną dynamicznie".

Myślałem że mi się to udało ale nie za bardzo. Program nie pokazuje błędów ale się wykszacza przy próbie uruchomienia. Nie mam pojęcia o co chodzi.

I pytanie przy okazji. Skoro w tablicy dynamicznej również mam mieć tylko 5 obiektów to czy wprowadzanie rozmiaru  z konsoli ma sens?  Jeśli dobrze myślę to jak to zastąpić?

#include <iostream>
#include <list>
#include <string>
#include <cstdlib>

using namespace std;

struct student {
  string imie;
  string nazwisko;
  int indeks;
  float srednia;
};

int main()
{
    student tablica_stat[5];
    tablica_stat[1].imie = "Jan";
    tablica_stat[1].nazwisko = "Kowalski";
    tablica_stat[1].indeks = 212345;
    tablica_stat[1].srednia = 5.5;

    tablica_stat[2].imie = "Krzysztof";
    tablica_stat[2].nazwisko = "Malinowski";
    tablica_stat[2].indeks = 254321;
    tablica_stat[2].srednia = 4.5;

    tablica_stat[3].imie = "Piotr";
    tablica_stat[3].nazwisko = "Wielki";
    tablica_stat[3].indeks = 256789;
    tablica_stat[3].srednia = 3.5;

    tablica_stat[4].imie = "Robert";
    tablica_stat[4].nazwisko = "Prawy";
    tablica_stat[4].indeks = 298765;
    tablica_stat[4].srednia = 3.75;

    tablica_stat[5].imie = "Janusz";
    tablica_stat[5].nazwisko = "Krawiecki";
    tablica_stat[5].indeks = 219285;
    tablica_stat[5].srednia = 4.37;


    int rozmiar;
    cin >> rozmiar;
    student*tablica_dyn= new student[rozmiar];

    tablica_dyn[1].imie = "Jan";
    tablica_dyn[1].nazwisko = "Kowalski";
    tablica_dyn[1].indeks = 255225;
    tablica_dyn[1].srednia = 5.5;

    tablica_dyn[2].imie = "Krzysztof";
    tablica_dyn[2].nazwisko = "Malinowski";
    tablica_dyn[2].indeks = 254321;
    tablica_dyn[2].srednia = 4.5;

    tablica_dyn[3].imie = "Piotr";
    tablica_dyn[3].nazwisko = "Wielki";
    tablica_dyn[3].indeks = 256789;
    tablica_dyn[3].srednia = 3.5;

    tablica_dyn[4].imie = "Robert";
    tablica_dyn[4].nazwisko = "Prawy";
    tablica_dyn[4].indeks = 298765;
    tablica_dyn[4].srednia = 3.75;

    tablica_dyn[5].imie = "Janusz";
    tablica_dyn[5].nazwisko = "Krawiecki";
    tablica_dyn[5].indeks = 219285;
    tablica_dyn[5].srednia = 4.37;

    return 0;
}

 

komentarz 5 maja 2020 przez Atman Użytkownik (810 p.)
Czyli lepiej byłoby gdybym przed mainem użył const int=5? Czy w mainie też będzie ok? Bo do tej pory stałe z const int pisaliśmy przed mainem ale nie wiem czy to musi być zasada zawsze
komentarz 5 maja 2020 przez tkz Nałogowiec (42,000 p.)
Const ze względu na to, że coś jest stałe, a nie gdzie się znajduje. Rozmiar tablicy będzie stały, więc const jest jak najbardziej na miejscu. Dobrą praktyką jest deklarowanie zmienny dopiero przed ich użyciem, w tym przypadku będzie tak samo, zadeklaruj const int ROZMIAR = 5; przed student tablica_stat[5];, ale w mainie.
komentarz 5 maja 2020 przez Atman Użytkownik (810 p.)
A czy bez użycia const ta wartość nie wynosiłaby zawsze 5? Bo nie widzę tutaj sposobu żeby sama się zmieniła jeśli takiego const bym nie dał
komentarz 5 maja 2020 przez tkz Nałogowiec (42,000 p.)
Const ma uchronić przed późniejszą, przypadkową zmianą. W dodatku niektóre kompilatory nie pozwalają na nie-const rozmiar tablicy.
komentarz 5 maja 2020 przez Atman Użytkownik (810 p.)
O i to jest super wiedza bo kompletnie tego nie wiedziałem.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 193 wizyt
pytanie zadane 6 listopada 2016 w C i C++ przez marcin8352 Nowicjusz (230 p.)
0 głosów
3 odpowiedzi 279 wizyt
pytanie zadane 25 lipca 2016 w C i C++ przez itcloud Gaduła (3,380 p.)
0 głosów
2 odpowiedzi 429 wizyt
pytanie zadane 11 września 2020 w C i C++ przez Kytrap Początkujący (390 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 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!

...