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

Czy ta funkcja zadziała?

Object Storage Arubacloud
0 głosów
297 wizyt
pytanie zadane 19 lipca 2022 w C i C++ przez DarkJedx Nowicjusz (190 p.)
#include <iostream>

using namespace std;
struct skrzynka{
    int wyskosc;
    int dlugosc;
    int szerokosc;
    int numer;
    bool zapisane;
}dane[49];

void wczytanie();
void usun();
void zmien();
void pokaz();
void wylistowanie();

int main()
{
    cout << "Hello World!" << endl;
    return 0;
}
void wczytanie(skrzynka dane[49])
{
    cout <<"Podaj numer skrzynki: ";
    cin >>dane[49].numer;
    if(dane[49].numer==false)
    {
        cout<<"Podaj wyskosc: ";
        cin>>dane->wyskosc;
        cout<<"Podaj dlugosc: ";
        cin>>dane->dlugosc;
        cout<<"Podaj szerokosc: ";
        cin>>dane->szerokosc;
        dane->zapisane=true;
    }

    else {
        cout<<"Podana skrzynka jest juz zajeta!";
    }
    
}

Mam pytanie czy funkcja wczytaj jest poprawna ?

2 odpowiedzi

+1 głos
odpowiedź 19 lipca 2022 przez j23 Mędrzec (194,920 p.)
wybrane 10 sierpnia 2022 przez DarkJedx
 
Najlepsza
cin >>dane[49].numer;
if(dane[49].numer==false)

 

unsigned int index;

cin >> index;

if(!dane[index].zapisane)
{
    cout << "Podaj wyskosc: ";
    cin >> dane[index].wyskosc;
    cout << "Podaj dlugosc: ";
    cin >> dane[index].dlugosc;
    cout << "Podaj szerokosc: ";
    cin >> dane[index].szerokosc;
    dane[index].zapisane = true;
}

else {
    cout << "Podana skrzynka jest juz zajeta!";
}

Chyba tak miało być, co?

P.S. tam też powinno być sprawdzanie, czy index mieści się w zakresie. Ale to napisz sobie sam.

komentarz 16 sierpnia 2022 przez DarkJedx Nowicjusz (190 p.)

@j23,  Mam pytanie czy const int miejsce = 50;

mogę użyć jak tablice jak zrobię coś takiego?

using namespace std;


const int miejsce = 50;

struct kiste {
    string id="<<empty>>";
    double szerokosc=0;
    double dlugosc=0;
    double wyskosc=0;
    double objetosci=0;
};

 

komentarz 16 sierpnia 2022 przez DarkJedx Nowicjusz (190 p.)
I czy string określa rodzaj to samo co tablica string
komentarz 16 sierpnia 2022 przez j23 Mędrzec (194,920 p.)
Chyba nie rozumiem pytań (pierwszego na pewno). Rozwiń może.
komentarz 17 sierpnia 2022 przez DarkJedx Nowicjusz (190 p.)
#include <iostream>
#include <stdlib.h>

using namespace std;


const int StanMagazynu = 50;

struct kiste {
    string id="<<empty>>";
    double szerokosc=0;
    double dlugosc=0;
    double wyskosc=0;
    double objetosc=0;
};

double calcobjetosc (double b,double h,double v){

    return (b*h*v);

}
int skrzynkaPozycja(skrzynka stanMagazynu[], string skrzynkaID)
{
    
    int counter = 0;
    bool found = false;
    while (counter < stanMagazynu  && !found){

        if (stanMagazynu[counter].id == kistenID){

            found = true;

        } else {

            counter++;

        }

    }

    if (!found){
        counter=-1;
    }

    return counter;
}

Mam pare pytań(to nie jest mojego autorstwa)

1.Do czego sluzy biblioteka stdlib.h i co sie stanie jak jej zabraknie.

2.Czy moge string zastapić normlanym bool i po co ma służyć tutaj string.

3. Dlaczego int skrzynkaPozycja(skrzynka stanMagazynu[], string skrzynkaID) ma takie parametry albo inaczej co one określają na przykład dlaczego stanMagazynu nie ma wogóle indexu no i po co tutaj znowu string.

Jeżeli można by było o jakieś dokładniesze wyjaśnienie czemu ma to służyć.

komentarz 17 sierpnia 2022 przez j23 Mędrzec (194,920 p.)
edycja 17 sierpnia 2022 przez j23
  1. <stdlib.h> to biblioteka języka C zawierająca deklaracje funkcji ogólnego przeznaczenia, jak np.  malloc, free, atoi, atof itd. Jeśli nie używasz funkcji z tej biblioteki, nie musisz załączać tego nagłówka.
  2.  chodzi Ci o to kiste::id? Jeśli tak, to nie, nie możesz zastąpić tego typem bool, bo typ ten ma dwa stany  - true i false, a w kodzie id służy do identyfikacji konkretnej skrzynki, a skrzynek może być przecież więcej niż dwie.
  3. Nie ma, bo nie musi mieć. I to nie jest indeks, a wielkość tablicy (bo mowa o definicji nowej zmiennej tablicowej). dlaczego nie musi mieć? Bo tablica w parametrze to nic innego jak wskaźnik. Równie dobrze możesz dać skrzynka *stanMagazynu.  Co do stringa, to w punkcie drugim pisałem, jaki jest jego sens.

const int StanMagazynu = 50;

Stan magazynu raczej nie może być const, bo magazyny mają to do siebie, że ich stan może się zmieniać. IMO nazwa niefortunna.

+3 głosów
odpowiedź 19 lipca 2022 przez Oscar Nałogowiec (29,290 p.)

Nagłówek (linia 12) ma inne parametry niż sama funkcja (linia 23). W C++ to się skompiluje, bo jest przeciążanie, wyjdzie coś dziwnego.

Tablica ma 49 pozycji - indeks 49 (linie 26-27) to poza zakresem. Numer ten tak ogólnie powinien być wczytany do jakiejś zmiennej lokalnej.

Numer to int, po co porównywać go do false  (linia 27)? Skompilować się pewnie skompiluje bo false to 0, ale czy o to chodzi? Z komunikatu pod else wynika że chodzi o zajętość skrzynki? To inne pole.

Wczytujesz wszystko do elementu o zerowym indeksie (np. dane->wysokość). Na pewno o to chodzi? A nie o dane[numer].wysokość ? Kompilator oczywiście to łyknie, ale co wyjdzie?

komentarz 19 lipca 2022 przez DarkJedx Nowicjusz (190 p.)
Ok dzięki postaram się później poprawić i wstawię poprawiona wersję

Podobne pytania

–2 głosów
1 odpowiedź 168 wizyt
pytanie zadane 8 stycznia 2017 w C i C++ przez Barteck125 Obywatel (1,120 p.)
0 głosów
3 odpowiedzi 157 wizyt
0 głosów
3 odpowiedzi 202 wizyt
pytanie zadane 7 stycznia 2017 w C i C++ przez Barteck125 Obywatel (1,120 p.)

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 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!

...