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

Problem z zadaniem.

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

using namespace std;

struct kisten
{
    int lagernummer;
    int breite;
    int leange;
    int hoehe;
    int volWert;
    bool aktiv;
};
kisten einlesen(kisten wert[50])
{
    cout <<"Bitte gaben die Kisten Indentifikations Numer ein:" <<endl;
           cin >> wert[50].lagernummer;
    if (wert[50].lagernummer <50 && wert[50].lagernummer == 0)
    {
        cout <<"Bitte geben die Breite der  Numer " << wert[50].lagernummer <<" Kisten in m ";
        cin >> wert[50].breite;
        cout <<"Bitte geben die Leange der Numer " << wert[50].lagernummer <<" Kisten in m ";
        cin >> wert[50].leange;
        cout <<"Bitte geben die Hohe der Nummer " << wert[50].lagernummer <<" Kisten in m ";
        cin >> wert[50].hoehe;
        wert[50].volWert = wert[50].breite * wert[50].leange * wert[50].hoehe;
        wert[50].aktiv = true;


    }

         else
         {
                      cout <<"Das Kistenlimit ist erreicht und kann nicht uberschritten werden.\n";


        }


    return wert[50];

}
kisten loschen(kisten wert[50])
{
    cout <<"Bitte geben die Kisten Indentifikations Numer ein:" <<endl;
    cin >> wert[50].lagernummer;
    if(wert[50].lagernummer!=0 && wert[50].aktiv!=false)
    {
        wert[50].lagernummer=0;
        wert[50].breite=0;
        wert[50].leange=0;
        wert[50].hoehe=0;
        wert[50].volWert=0;
        wert[50].aktiv=false;
    }
    else
    {
        cout <<"Dieses Kisten existiert nicht!\n";
    }
    return wert[50];

}
kisten aendern(kisten wert[50])
{
    cout <<"Bitte geben die Kisten Indentifikations Numer ein welsche soll aendern sein:" <<endl;
    cin >> wert[50].lagernummer;
    if(wert[50].lagernummer!=0 && wert[50].aktiv!=false)
    {
        kisten loschen();
        kisten einlesen();
    }
    else
    {
    cout<<"Dieses Kisten existiert nicht!\n";
    }
    return wert[50];
}
kisten anzeigen(kisten wert[50])
{
    cout <<"Bitte geben die Kisten Indentifikations Numer ein welsche soll aendern sein:" <<endl;
    cin >> wert[50].lagernummer;
    if(wert[50].lagernummer!=0 && wert[50].aktiv!=false)
    {
        cout<<"Kiste Nummer:\t"<<wert[50].lagernummer<<'\n';
        cout<<"Breite der Kiste:\t"<<wert[50].breite<<'\n';
        cout<<"Leange der Kiste:\t"<<wert[50].leange<<'\n';
        cout<<"Hohe der Kiste:\t"<<wert[50].hoehe<<'\n';
        cout<<"Volumen der Kiste:\t"<<wert[50].volWert<<'\n';
    }
    else
    {
        cout<<"Dieses Kisten existiert nicht!\n";
    }
    return wert[50];
}
kisten liste(kisten wert[50])
{
    for(int index=0;index<=wert[50].lagernummer; index++)
    {
        cout<<"Kiste Nummer:\t"<<wert[50].lagernummer<<'\n';
        cout<<"Breite der Kiste:\t"<<wert[50].breite<<'\n';
        cout<<"Leange der Kiste:\t"<<wert[50].leange<<'\n';
        cout<<"Hohe der Kiste:\t"<<wert[50].hoehe<<'\n';
        cout<<"Volumen der Kiste:\t"<<wert[50].volWert<<'\n';
    }
    return wert[50];}

int main()
{
    using namespace std;
    char nrmenu;
    kisten wert[50];
    do
    {
        cout <<"*****LAGERSOFTWARE*****\n";
        cout <<"Menu:\n";
        cout <<"1.Einlesen\n";
        cout <<"2.Loschen\n";
        cout <<"3.Andern\n";
        cout <<"4.Anzeigen\n";
        cout <<"5.Liste\n";
        cout <<"6.Beenden\n";
        cin >> nrmenu;
        switch(nrmenu)
        {
        case'1':
            einlesen(wert);
            break;
        case'2':
            loschen(wert);
            break;
        case'3':
            aendern(wert);
            break;
        case'4':
            anzeigen(wert);
            break;
        case'5':
            liste(wert);
            break;
        case'6':
            cout <<"Das Menu ist beenden.\n";
            exit(0);
            break;
        }
    }
    while(nrmenu !=6);
    return(0);
}

 

 

Problem jest taki że nie do końca mi działa to i nie wiem gdzie jest problem gdyż wpisując wyskość po zapisaniu pokazuje mi nie tą liczbę oraz andern fukcja mi nie działa 

Prosił bym o pomoc

komentarz 1 maja 2022 przez DarkJedx Nowicjusz (190 p.)

Bitte gaben die Kisten Indentifikations Numer ein:
1
Bitte geben die Breite der  Numer 1 Kisten in m 1
Bitte geben die Leange der Numer 1 Kisten in m 1
Bitte geben die Hohe der Nummer 1 Kisten in m 1
*****LAGERSOFTWARE*****
Menu:
1.Einlesen
2.Loschen
3.Andern
4.Anzeigen
5.Liste
6.Beenden
4
Bitte geben die Kisten Indentifikations Numer ein welsche soll aendern sein:
1
Kiste Nummer:   1
Breite der Kiste:       1
Leange der Kiste:       1
Hohe der Kiste: 872415233
Volumen der Kiste:      1
*****LAGERSOFTWARE*****
Menu:
1.Einlesen
2.Loschen
3.Andern
4.Anzeigen
5.Liste
6.Beenden

komentarz 1 maja 2022 przez Oscar Nałogowiec (29,290 p.)

@DarkJedx,  podstawowy bład:

masz zadeklarowaną tablicę:

    kisten wert[50];

Maksymalny indeks elementu w tej tablicy to 49 a w kodzie widzę pełno [50].

komentarz 1 maja 2022 przez DarkJedx Nowicjusz (190 p.)
Powinienem zmienić na 49, bo problem jest taki że mam zadnie gdzie mam zrobić program który:

Odczyta i zapisze długość, szerokość i wysokość skrzynki

Zapisze do 50 skrzynek

Będzie mieć menu gdzie będę mógł:

- wprowadzić wymiary

- zmienić wymiary

- usunąć

- wyświetlić podaną skrzynkę

- wyświetlić wszystkie skrzynki

Problem jest taki że funkcje działają lecz za każdym razem gdy wprowadzam nowa skrzynkę to z wymiarami to hoehe nie zgadza się i pojawa się ogromna liczba, która nie wiem skąd sie pojawia.

Jeżeli ktoś mógł by mi powiedzieć gdzie błąd zrobiłem czy w funkcji i warunku czy to właśnie z ta liczba 50 bo ja juz sam nie wiem jak powinno być to prawidłowo.
komentarz 1 maja 2022 przez Oscar Nałogowiec (29,290 p.)
edycja 1 maja 2022 przez Oscar

Zaznaczam, że mimo iż pracowałem kilka lat w polsko-niemieckiej firmie to języka niemieckiego nie znan ani trochę, korzystam z opisu zadania i słowniczka napisanego w innych komentarzach.

Program wymaga znacznych poprawek (to nie na jedno podejście, chyba że chciałbyś gotowca):

1. Na początku trzeba utworzyć tablicę (są lepsze struktury do tego, ale chyba jeszcze nie znacie, skoro w zadaniu jest maksymalna liczba pozycji). Pole aktiv (moje przypuszczenie na podstawie tego co napisałeś o treści zadania) ma wyróżniać użyte i wolne "komórki" tablicy. Na początek trzeba je wszystkie ustawić na wolne/nieaktywne - czyli na false. Tablice tworzysz wewnątrz funkcji (nieważne że main) - wtedy jest początkowa zawartość jest nieokreślona. Trzeba albo ustawić to w jakiejś pętli albo poprzez inicjator np. = {}.

2. Istnieją zmienne lokalne w funkcjach - tych funkcjach robiących operację też. Wykorzystaj je do pobierania od użytkownika dodatkowych informacji. Np. o lagernummer.

2. Większość opisanych funkcji (wyjątek to chyba liste) musi działać na jednym elemencie tablicy - ale musi go sobie znaleźć.

I tak np. funkcja do wprowadzania (einlesen zgodnie za słowniczkiem z innego komentarza) powinna najpierw znależć wolny element tablicy (aktiv == false) a potem wprowadzić dane do tego elementu. Możliwa jest sytuacja, gdy wolny element nie zostanie znaleziony - wtedy trzeba wypisać jakiś komunikat i można to zasygnalizować w wyniku funkcji. Funkcje zamiast zwracać kisten (co jest trochę bez sensu) mogą zwracać void, bool (udało się/nie), int (indeks użytego elementu/-1 jako błąd.

3. Funkcja liste ma po prostu przelecieć się (pętla) po całej tablicy i wypisać te elementy, które mają aktiv == true. Fajnie jakby też wypisała ile jest tych z aktiv == false - by użytkownik wiedział ile jest "wolnego miejsca".  Może to też zwrócić jako wynik.

4. Nie bardzo wiem jak obsłużyć pole lagernummer. Czy ma to coś wspólnego z pozycją w tablicy? Jeśli tak to umieszczanie tego w elementach jest zbędne, jeśli nie to jest to po unikalny klucz, po którym trzeba szukać pozycji w tablicy - pytasz się użytkownika o tą wartość i wyszukujasz (znawu pętla) pozycję o podanej wartości pola lagernummer i, oczywiście o, aktiv==true.

To co napisałem wyżej to w dużej mierze przypuszczenia na podstawie tego co wcześniej napisano (dziękuje użytkownikowi #Edutomek za słowniczek). By taki program ocenić/poprawić trzeba by znać dokładną treść zadania i poziom wiedzy jakim dysponujesz "oficjalnie". Domyślam się, że to są początki programowania i jeszcze nie znacie na nawet połowy samego języka, nie mówiąc o bibliotekach.

 

 

komentarz 1 maja 2022 przez DarkJedx Nowicjusz (190 p.)
Dzięki wielkie to wiele wyjaśnia. Lagernummer to chodzi o miejsce w tabeli i możliwości wyszukania konkretnej kisty czyli nadanie poprostu numerka jak w kolejce do lekarza. Dzięki jeszcze raz za odpowiedź gdyż ja od tygodnia się z tym męczę.

1 odpowiedź

0 głosów
odpowiedź 1 maja 2022 przez Apled Dyskutant (9,520 p.)
A po chińsku weź jeszcze wyślij
komentarz 1 maja 2022 przez DarkJedx Nowicjusz (190 p.)
Mieszkam w Niemczech zadanie jest po niemiecku ale kod cały jak w standardzie więc nie wiem o co ci chodzi
komentarz 1 maja 2022 przez edutomek Dyskutant (8,380 p.)
Na C++ nie znam się na tyle, żeby się wypowiadać (choć nie podobają mi się indeksy tablic w funkcjach), ale dla chętnych podam mały słownik:

einlesen - wprowadzanie
loschen - usuwanie
andern - zmiana / modyfikacja
  (w kodzie nie ma literówki? nie powinno być andern, zamiast aendern?)
anzeigen - podgląd / pokazanie
liste - wylistowanie

oraz najważniejsze, czyli:

beenden - koniec

Niemiecki miałem dawno, nie używam (a nawet bardzo nie lubię), więc tłumaczenie może być kiepskiej jakości. Chińskiego planuję się nauczyć w tzw. wolnej chwili.

Do Autora pytania dwie sprawy.

1) Może warto byłoby choć trochę opisać, jak powinny działać te funkcje? Np. co powinna robić funkcja einlesen (poza tym, że wczytać daną tego pudła? /kisten - pudło? karton? opakowanie? z niemieckiego zapamiętałem jedno praktyczne zdanie: meine Deutschsprachkentnisse ist sehr schwach...) - gdzie powinny trafiać wprowadzone dane?

Swoją drogą, to w aendern wywoływane są funkcje do usuwania, a potem do wprowadzania danych, ale już żadne parametry nie są tam przekazywane. Może to mój brak znajomości C++, ale mi się to nie podoba.

Dalej niech już spece od C++ się wypowiadają.

2) Nie ma znaczenia, gdzie mieszkasz. Mieszkaj sobie choćby w Chinach. Wchodzisz na polskojęzyczne forum, zadajesz pytanie dotyczące programowania. Wypadałoby posługiwać się językiem polskim (w poście to robisz), względnie angielskim - w kodzie. To są przyjęte standardy.

Czy jeśli ktoś mieszka w Polsce, to ma wchodzić na forum niemieckojęzyczne i pokazywać tam kod z polskimi nazwami?

Także uwaga Apled-a jest, poniekąd, zrozumiała. Nazwy funkcji są po niemiecku, a mają duże znaczenie (dlatego podałem tłumaczenie).

Akurat niemieckiego kiedyś się uczyłem, to coś tam zrozumiałem, ale gdybyś mieszkał w takiej Francji, czy Włoszech, to nie miałbym żadnych szans.

Podobne pytania

0 głosów
1 odpowiedź 331 wizyt
pytanie zadane 17 lutego 2022 w C i C++ przez tonn204 Mądrala (7,440 p.)
0 głosów
0 odpowiedzi 337 wizyt
pytanie zadane 29 września 2021 w C i C++ przez diedassel Użytkownik (570 p.)
0 głosów
1 odpowiedź 222 wizyt
pytanie zadane 4 sierpnia 2020 w C i C++ przez Arek04 Użytkownik (700 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

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

...