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

Problem z funkcja nawigacji po aplikacji sklepu (C++)

Object Storage Arubacloud
0 głosów
85 wizyt
pytanie zadane 3 listopada 2020 w C i C++ przez MONKNOW Użytkownik (720 p.)

Hej, napisalem aplikacje sklepu, nie jest ona jeszcze skonczona, ale na obecnym etapie powinna dzialac funkcja nawigacji. Niestety nie moge doszukac sie czemu po odpaleniu programu, niezaleznie od tego co uzytkownik poda zmiennej string wybor, to i tak nawigacja odsyla uzytkownika do funkcji wyswietl_nazwy(). Moze wy znajdziecie blad, albo zasugerujecie inny sposob napisania takiego programu?

#include <iostream>
#include <numeric>
#include "FunkcjeApki.h"
using namespace std;

int main()
{
    int ile_p = 5; //wpisz tutaj ilosc obiektow produkt, ktorymi chcesz operowac w programie.
    string wybor; //nawiguje uzytkownika po sklepie
    bool czy_lista = 0; //zmienna sprawdzajaca czy program jest w funkcji wyswietl_nazwy()
    int koszyk[ile_p]; //alokacja pamieci na ID produktow do kupienia
    produkt lista[ile_p]; //alokacja pamieci na obiekty produkt

    // v tu dodawaj kolejne produkty(nazwa, ilosc, cena, ID) v
    lista[0].podaj_dane("Jablko", 20, 2, 9);
    lista[1].podaj_dane("Chleb", 10, 5, 4);
    lista[2].podaj_dane("Marchew", 40, 2, 5);
    lista[3].podaj_dane("Mleko", 10, 3, 6);
    lista[4].podaj_dane("Hot-dog", 50, 3, 8);
    // ^ tu dodawaj kolejne produkty(nazwa, ilosc, cena, ID) ^

    while(1){
    cout << "Witaj w sklepie, przejdz do listy produktow (L) albo do koszyka (K)";
    cin >> wybor;
    nawigacja(ile_p, lista, koszyk, wybor, czy_lista);
    }

    return 0;
}
#include <iostream>
#include <numeric>
#include "FunkcjeApki.h"
using namespace std;

produkt::produkt(){
    ilosc = 0;
    cena = 0;
    ID = 0;
    nazwa = "N/A";
    }
void produkt::podaj_dane(string _nazwa, int _ilosc, int _cena, int _ID){
    nazwa = _nazwa;
    cena = _cena;
    ilosc = _ilosc;
    ID = _ID;
    }
void produkt::wyswietl_dane(){
    cout << "nazwa: " << nazwa << endl;
    cout << "cena: " << cena << endl;
    cout << "ilosc: " << ilosc << endl;
    cout << "ID: " << ID << endl;
    }

void nawigacja(int& ile_p, produkt lista[], int koszyk[], string& wybor, bool& czy_lista){
    if(wybor == "L" || "l"){
            wyswietl_nazwy(ile_p, lista, koszyk, wybor, czy_lista);
    } else if (wybor == "K" || "k") {
            idz_do_koszyka(ile_p, lista, koszyk, wybor);
    } else if (wybor == "Z" || "z") {
     for(int i =0; i<ile_p; i++){
        if(lista[i].ID == koszyk[i]){
            lista[i].ilosc --;
            cout << "dziekujemy za zakupy!" << endl;
            wyswietl_nazwy(ile_p, lista, koszyk, wybor, czy_lista);
            } else { ; }
        }
    } else {
        for (int i=0; i<ile_p; i++){
            if (wybor == lista[i].nazwa && czy_lista == 1) { //co zrobic jesli przedmiot jest w bazie
                wyswietl_szczegoly(ile_p, lista, koszyk, wybor, czy_lista);
            } else { ; }
        }

    }

}
void wyswietl_nazwy(int& ile_p, produkt lista[], int koszyk[], string& wybor, bool& czy_lista){ //wyswietlenie nazw z listy obiektow
 czy_lista = 1;
 for (int i=0; i<ile_p; i++){
        cout << lista[i].nazwa << " ";
    }
    cout << endl <<"Aby wyswietlic szczegoly, podaj nazwe produktu(uwaga na rozmiar liter) lub przejdz do koszyka(K)." << endl;
    cin >> wybor;
    nawigacja(ile_p, lista, koszyk, wybor, czy_lista);
}
void wyswietl_szczegoly(int& ile_p, produkt lista[], int koszyk[], string& wybor, bool& czy_lista){ //wyswietlenie szczegolow wybranego przedmiotu
 czy_lista = 0;
 bool na_stanie = 0;
 for (int i=0; i<ile_p; i++){
        if (wybor == lista[i].nazwa) { //co zrobic jesli przedmiot jest w bazie
            lista[i].wyswietl_dane();
            na_stanie = 1;
        cout << "Aby dodac produkt do koszyka, wprowadz jego ID" << endl;
        cin >> koszyk[i];
        }
    }
    if (!na_stanie){ //jesli przedmiotu nie ma w bazie
    cout << "Niestety nie ma takiego produktu!" << endl;
    }
}
void idz_do_koszyka(int& ile_p, produkt lista[], int koszyk[], string& wybor){ //przechodzi do koszyka
int suma = 0;
bool stan_koszyka = 0;
cout << "Witaj w koszyku, oto lista Twoich zakupow." <<endl; //wyswietl nazwy przedmiotow dodanych do koszyka
    for(int i =0; i<ile_p; i++){
        if(lista[i].ID == koszyk[i]){
            cout << lista[i].nazwa << " cena: " << lista[i].cena << endl;
            suma += lista[i].cena;
            stan_koszyka = 1;
        }
    }
    if (!stan_koszyka){ // brak produktow w koszyku lub suma do zaplaty
        cout << "Nie dodales jeszcze nic do koszyka!" << endl;
    }else {
        cout << "W sumie do zaplaty: " << suma << endl;
        cout << "Wroc do listy produktow(L) lub zaplac (Z)";
        cin >> wybor;
    }
}
#ifndef FUNKCJEAPKI_H
#define FUNKCJEAPKI_H
#include <iostream>
#include <numeric>

using namespace std;

class produkt{
public:
    string nazwa;
    int ilosc;
    int cena;
    int ID;
    //default constructor
    produkt();
    void podaj_dane(string _nazwa, int _ilosc, int _cena, int _ID);
    void wyswietl_dane();
};
void nawigacja(int& ile_p, produkt lista[], int koszyk[], string& wybor, bool& czy_lista); //nawiguje po stronie
void wyswietl_nazwy(int& ile_p, produkt lista[], int koszyk[], string& wybor, bool& czy_lista); //wyswietlenie nazw z listy obiektow
void wyswietl_szczegoly(int& ile_p, produkt lista[], int koszyk[], string& wybor, bool& czy_lista); //wyswietlenie szczegolow wybranego przedmiotu
void idz_do_koszyka(int& ile_p, produkt lista[], int koszyk[], string& wybor); //przechodzi do koszyka


#endif // FUNKCJEAPKI_H

 

1 odpowiedź

0 głosów
odpowiedź 3 listopada 2020 przez tangarr Mędrzec (154,860 p.)
wybrane 3 listopada 2020 przez MONKNOW
 
Najlepsza

Skopałeś warunki logiczne.
Warunek

if(wybor == "L" || "l")

jest tłumaczony na

if(wybor == "L" || true)

Literał "l" zawsze jest prawdziwy.
Powinieneś użyć konstrukcji

if(wybor == "L" || wybor == "l")

 

komentarz 3 listopada 2020 przez MONKNOW Użytkownik (720 p.)
aaaale siaraa :D dzieki! btw. program wyglada mega szkolnie czy w miare normalnie? Czym moglbym sie zainteresowac zeby byl bardziej pro? Nawet z tak prosta funkcjonalnoscia chcialbym juz nasiakac dobrymi nawykami.

Podobne pytania

+1 głos
3 odpowiedzi 220 wizyt
0 głosów
1 odpowiedź 253 wizyt
pytanie zadane 18 listopada 2017 w HTML i CSS przez R.orlinski Mądrala (5,490 p.)
0 głosów
1 odpowiedź 629 wizyt
pytanie zadane 9 sierpnia 2019 w JavaScript przez Luckyluck87 Użytkownik (660 p.)

92,690 zapytań

141,603 odpowiedzi

320,103 komentarzy

62,051 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

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!

...