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

Książka telefoniczna w c++

Object Storage Arubacloud
0 głosów
1,245 wizyt
pytanie zadane 10 maja 2020 w C i C++ przez KtosNaPewno Nowicjusz (140 p.)

Witam mam za zadanie napisać książkę telefoniczną używając struktur. Napisałem kod ale niestety nie działa. Błąd pewnie jest w funkcjach ale nie wiem jak to naprawić i prosiłbym o pomoc w naprawieniu kodu.

#include<iostream>
using namespace std;

struct ksiazka
{
    string imie;
    string nazwisko;
    int nr_tel;

};
void wczytaj_dane(int i)
{
    ksiazka x[100];
    cout<<"Podaj imie: ";
    cin>>x[i].imie;
    cout<<"Podaj nazwisko: ";
    cin>>x[i].nazwisko;
    cout<<"Podaj nr telefonu: ";
    cin>>x[i].nr_tel;
}
void znajdz (int i)
{
    ksiazka cos[100];
    if(i==0)
    {
        cout<<"Aby wyszukac kontakt musisz miec wpisany chociaz jeden kontakt\n";
        return;
    }
    string a;
    cout<<"Podaj nazwisko ktore chcesz wyszukac:";
    cin>>a;

    for(int j=0; j<i; j++)
    {
        if(cos[i].nazwisko==a)
        {
            cout<<"Osoba zostala znaleziona\n";
            cout<<"Jej dane: ";
            cout<<"Imie: "<<cos[i].imie<<"\n";
            cout<<"Nazwisko: "<<cos[i].nazwisko<<"\n";
            cout<<"Numer telefonu: "<<cos[i].nr_tel<<"\n";
        }
        else
        {
            cout<<"Taki kontakt nie istnieje\n";
        }
    }
}

void wypisz(int i)
{
    ksiazka y[100];
    int licz=1;
    if(i==0)
    {
        cout<<"Brak wpisow\n";
    }
    else
    {
        for(int j=0; j<i; j++)
        {
            cout<<"Kontakt numer "<<licz<<".\nImie:"<<y[i].imie<<"\n";
            cout<<"Nazwisko:"<<y[i].nazwisko<<"\n";
            cout<<"Numer telefonu:"<<y[i].nr_tel<<"\n";
            licz++;
        }
    }
}

void info()
{
    cout<<"Wybierz numer opcji ktora chcesz wykonac"<<"\n";
    cout<<"1.Wpisz nowy kontakt"<<"\n";
    cout<<"2.Znajdsz kontakt po nazwisku"<<"\n";
    cout<<"3.Wypisz wszystkie kontakty"<<"\n";
    cout<<"4.Zakoncz dzialanie"<<"\n";
    cout<<"Twoj wybor:";
}

int main()
{
    ksiazka in[100];
    int i=0;
    for(;;)
    {
        int nr_o;
        info();
        cin>>nr_o;

        switch(nr_o)
        {
        case 1:
        {
            if(i>100)
            {
                cout<<"Osiagnales limit kontaktow(100). Nie mozesz juz dodawac kontaktow\n";
                break;
            }
            wczytaj_dane(i);

            i++;
            break;
        }
        case 2:
        {
            znajdz(i);
            break;
        }
        case 3:
        {
            wypisz(i);
            break;
        }
        case 4:
        {
            cout<<"Program konczy dzialanie\n";
            cout<<"Dziekuje za wspolprace";
            return 0;
        }
        }
    }
}

 

komentarz 10 maja 2020 przez tkz Nałogowiec (42,000 p.)
Co znaczy "nie działa"?
komentarz 10 maja 2020 przez KtosNaPewno Nowicjusz (140 p.)
edycja 10 maja 2020 przez KtosNaPewno
Jak ma wypisać wszystkie kontakty albo znaleźć kontakt po nazwisku to nic nie wypisuje.Błąd pewnie jest jak jest w funkcji np. ksiazka x[100] bo deklaruje to w każdej funkcji i pewnie to jest błąd ale nie wiem jak to naprawić
komentarz 10 maja 2020 przez tkz Nałogowiec (42,000 p.)
Prześlij strukturę do funkcji. A przesyłaną strukturę zadeklaruj w mainie.
komentarz 10 maja 2020 przez KtosNaPewno Nowicjusz (140 p.)
A czy mógłbyś skopiować chociaż jedną funkcje i zrobić prawidłowo dla przykładu? Bo z resztą bym sobie poradził
komentarz 10 maja 2020 przez tkz Nałogowiec (42,000 p.)
#include<iostream>
using namespace std;
 
struct ksiazka
{
    string imie;
    string nazwisko;
    int nr_tel;
 
};
void wczytaj_dane(int i, ksiazka *x)
{
    cout<<"Podaj imie: ";
    cin>>x[i].imie;
    cout<<"Podaj nazwisko: ";
    cin>>x[i].nazwisko;
    cout<<"Podaj nr telefonu: ";
    cin>>x[i].nr_tel;
}
void wypisz(int i, ksiazka *x)
{
    cout<<x[i].imie<<x[i].nazwisko<<x[i].nr_tel<<'\n';
}

int main()
{
   ksiazka k[2];
   for(int i = 0; i < 2; ++i)
   {
       wczytaj_dane(i, k);
   }
  for(int i = 0; i < 2; ++i)
   {
       wypisz(i, k);
   }
}

Ogólnie radzę by funkcja nie przyjmowała iteratora(tego "i" jako argument), oraz by działała na pojedynczej strukturze, a nie na całej tablicy. Będzie łatwiej po prostu. 

komentarz 10 maja 2020 przez KtosNaPewno Nowicjusz (140 p.)
Dziękuje bardzo za pomoc kod już ogarnąłem i działa
komentarz 4 listopada 2020 przez Mesiper Nowicjusz (140 p.)

@KtosNaPewno, w 74 linijce jest błąd ortograficzny. Jest "Znajdsz" zamiast "Znajdz"

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

Podobne pytania

0 głosów
0 odpowiedzi 898 wizyt
pytanie zadane 9 grudnia 2019 w C i C++ przez Sliva Nowicjusz (120 p.)
0 głosów
1 odpowiedź 285 wizyt
pytanie zadane 21 kwietnia 2022 w C i C++ przez pasjonat_algorytmiki Pasjonat (19,540 p.)
0 głosów
0 odpowiedzi 135 wizyt
pytanie zadane 10 października 2020 w Algorytmy przez wojtek_suchy Mądrala (6,880 p.)

92,632 zapytań

141,500 odpowiedzi

319,878 komentarzy

62,012 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!

...