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

program ze struktura

VPS Starter Arubacloud
+1 głos
304 wizyt
pytanie zadane 30 marca 2021 w C i C++ przez paweł007 Nowicjusz (180 p.)

program wyglada tak

#include <iostream>
using namespace std;

struct dane_os
{
    char imie[30];
    char nazwisko[40];
    char pesel[12];
    unsigned long long wynagrodzenie;


};

int main()
{
    int i,n;
    cout <<"Podaj ile osob chcesz wprowadzic do bazy danych: ";
    cin >> n;
    cout <<endl;

    dane_os dane [n];
    for (i=1;i<=n;i++)
    {
        cout <<"Podaj imie: ";
        cin >> dane[i].imie;
        cout <<"Podaj nazwisko: ";
        cin >>dane[i].nazwisko;
        cout <<"Podaj pesel: ";
        cin >>dane[i].pesel;
        cout << "podaj srednie wynagrodzenie ";
        cin >> dane[i].wynagrodzenie;
        cout <<endl;
    }



    for(i=1;i<=n;i++)
    cout<<"pracownik " << i <<" :"<<dane[i].imie<<"; "<<dane[i].nazwisko<<"; "<<dane[i].pesel<<"; "<<dane[i].wynagrodzenie<<"zl ; "<<endl;

    return 0;
}

 

i chodzi o to ze uzytkownik podaje ile danych pracownikow chce wpisać a potem te informacje wpisuje a nastepnie one sie wyswietlaja i za kazdym razem w miejscu nazwiska ostatniego pracownika wyswietla sie "m" zamiast nazwiska 

1
komentarz 30 marca 2021 przez Oscar Nałogowiec (29,290 p.)

Masz ambicje! Wynagrodzenie jako long long! smiley

komentarz 30 marca 2021 przez VBService Ekspert (251,210 p.)

@paweł007, Zamieniłbym Wynagrodzenie na doublewink

#include <iostream>
#include <iomanip> 

using namespace std;
 
struct dane_os
{
    char imie[30];
    char nazwisko[40];
    char pesel[12];
    double wynagrodzenie;
};
 
int main()
{
    int i,n;
    
    cout << "Podaj ile osob chcesz wprowadzic do bazy danych: ";
     cin >> n;
    cout << endl;
 
    dane_os dane[n];
    for (i=0; i<n; i++)
    {
        cout << "Podaj imie: ";
         cin >> dane[i].imie;
        cout << "Podaj nazwisko: ";
         cin >> dane[i].nazwisko;
        cout << "Podaj pesel: ";
         cin >> dane[i].pesel;
        cout << "podaj srednie wynagrodzenie: ";
         cin >> dane[i].wynagrodzenie;
        cout << endl;
    }
 
    for (i=0; i<n; i++)
        cout << "pracownik " << (i+1) << " : "
             << dane[i].imie << "; "
             << dane[i].nazwisko << "; "
             << dane[i].pesel << "; "
             << fixed << setprecision(2) << dane[i].wynagrodzenie << "zl;" << endl;
 
    return EXIT_SUCCESS;
}

komentarz 31 marca 2021 przez TOM_CPP Pasjonat (22,640 p.)

@Oscar, Może po prostu przewiduje hiperinflację.

komentarz 31 marca 2021 przez TOM_CPP Pasjonat (22,640 p.)

@VBService,
Wynagrodzenia nigdy nie powinny być reprezentowane przez typy zmiennoprzecinkowe, gdyż może to w efekcie doprowadzić do błędnych obliczeń. Liczba 0.6 nie jest dokładnie reprezentowana przez żaden typ zmiennoprzecinkowy. Stąd też przy intensywnych obliczeniach niedokładność ta będzie się kumulowała.

Zobacz przykład.

https://godbolt.org/z/feh4vrcTh

1 odpowiedź

+4 głosów
odpowiedź 30 marca 2021 przez tangarr Mędrzec (154,780 p.)
Tablice w C++ są indeksowane od 0.
Podczas iteracji wychodzisz poza zakres tablicy i nadpisujesz inne zmienne.
komentarz 30 marca 2021 przez paweł007 Nowicjusz (180 p.)
ale to w takim razie dlaczego wszystko poprawnie sie wypisuje a nazwisko jako jedyne wyswietla sie jako "m"
komentarz 30 marca 2021 przez tangarr Mędrzec (154,780 p.)
Prawdopodobnie pozycja "ostatniego" wpisu pokrywa się ze zmienną i
komentarz 30 marca 2021 przez paweł007 Nowicjusz (180 p.)

@tangarr, to jak to moge naprawic. i w ogole dlaczego akurat m sie wyswietla

 

2
komentarz 30 marca 2021 przez tangarr Mędrzec (154,780 p.)
Nie wychodź poza tablicę!
Pierwszy element tablicy ma indeks 0.
Ostatni element w tablicy ma indeks n-1.
Używając indeksu n nadpisujesz inną pamięć.

Podobne pytania

0 głosów
2 odpowiedzi 319 wizyt
pytanie zadane 23 czerwca 2021 w C i C++ przez Eriss69 Gaduła (4,470 p.)
0 głosów
1 odpowiedź 568 wizyt
pytanie zadane 11 czerwca 2018 w SQL, bazy danych przez emeryt68 Nowicjusz (130 p.)
0 głosów
1 odpowiedź 315 wizyt
pytanie zadane 22 marca 2016 w HTML i CSS przez maxo124 Nowicjusz (210 p.)

92,454 zapytań

141,262 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...