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

Odczytywanie zapisanego pliku nie działa

VPS Starter Arubacloud
0 głosów
163 wizyt
pytanie zadane 27 grudnia 2016 w C i C++ przez PatrykPlusPlus Początkujący (320 p.)
otwarte ponownie 27 grudnia 2016 przez PatrykPlusPlus

Mógłby ktoś wskazać co zrobiłem źle?

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <windows.h>
#include <iomanip>
#include <conio.h>
#include <fstream>
using namespace std;

  string imie[7];
  float kasa[6];
  fstream zm;

int main()
{
    cout<<tr("Wczytać zapis?(t/n): "); string zapis; zapis=getch();
    if(zm.good()==true)
    {
if(zapis=="t")
    {
        string linia;
        int nl=1;
        while(getline(zm, linia))
        {
            switch(nl)
            {
            case 1: imie[1]=atoi(linia.c_str());break;
            case 2: kasa[1]=atoi(linia.c_str());break;
            case 3: imie[2]=atoi(linia.c_str());break;
            case 4: kasa[2]=atoi(linia.c_str());break;
            case 5: imie[3]=atoi(linia.c_str());break;
            case 6: kasa[3]=atoi(linia.c_str());break;
            case 7: imie[4]=atoi(linia.c_str());break;
            case 8: kasa[4]=atoi(linia.c_str());break;
            case 9: imie[5]=atoi(linia.c_str());break;
            case 10: kasa[5]=atoi(linia.c_str());break;
            case 11: imie[6]=atoi(linia.c_str());break;
            case 12: kasa[6]=atoi(linia.c_str());break;
            }
         nl++;
        }
        zm.close();
    }
for(;;)
{
 zm.open("monopoly.txt",ios::out);
    system("cls");
    for (int q=1; q<=6; q++)
    {

if(imie[q]!="null")
{cout<<"Witaj graczu nr."<<q<<"("<<imie[q]<<tr("). Twój stan konta wynosi ")<<kasa[q]<<"$"<<endl;}
zm<<imie[q]<<endl<<kasa[q]<<endl;
    }

}//for
}
}//main

 

1 odpowiedź

0 głosów
odpowiedź 27 grudnia 2016 przez sofnir Gaduła (4,690 p.)
Masz tablice kasa[6], a potem robisz coś takiego:

case 12: kasa[6]=atoi(linia.c_str());break;

Przypominam, że tablice numerowane są od 0 :) Dodatkowo zamiast switcha zalecam użycie pętli. Jak masz imie to niepotrzebnie używasz atoi.
komentarz 27 grudnia 2016 przez PatrykPlusPlus Początkujący (320 p.)
edycja 27 grudnia 2016 przez PatrykPlusPlus
Tak pamiętałem, że normalnie tablice są od zera, ale nwm czemu palnąłem [6].

A atoi przy stringu użyłem, bo szybciej kopiować a WYJĄTKOWO nic nie zmienia :)
EDIT:Mimo poprawki wciąż nic się nie wczytuje.

Podobne pytania

0 głosów
1 odpowiedź 351 wizyt
0 głosów
2 odpowiedzi 1,607 wizyt
pytanie zadane 16 kwietnia 2019 w C# przez WojMen Początkujący (330 p.)
0 głosów
3 odpowiedzi 650 wizyt

92,452 zapytań

141,262 odpowiedzi

319,078 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!

...