Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] używanie danych wprowadzonych z pliku

Ostatnio zmodyfikowano 2009-10-04 18:08
Autor Wiadomość
szkuner
Temat założony przez niniejszego użytkownika
[C++] używanie danych wprowadzonych z pliku
» 2009-10-04 00:35:09
Napisałem coś takiego i teraz niewiem jak mam połączyć wczytane dane z pliku do
zmiennych w strukturze zeby program mógł z nich kożystać.
C/C++
#include <iostream>
#include <string>
using namespace std;
const int size = 60;
struct trzd
{
    string nazwisko;
    double dotacja;
   
};

int main()
{
   
   
    int main()
    { char filename[ size ];
        ifstream infile;
       
        cout << "Podaj nazwe pliku:";
        cin.getline( filename, size );
        infile.open( filename );
        if( !infile.is_open() )
        {
           
            cout << "Otwarcie pliku bland ogolny" << filename << "\n";
            cout << "program zostanie zakonczony\n";
            exit( EXIT_FAILURE );
        }
        string dane;
        int licz = 0;
       
        infile >> dane;
        while( infile.good() )
        {
            ++licz;
           
            infile >> dane;
           
        }
        if( infile.eof() )
             cout << "koniec pliku\n";
        else if( infile.fail() )
             cout << "Wczytywanie pkiku przerwane\n";
        else
             cout << "Wczytywanie bład nie znany\n";
       
        if( licz == 0 )
             cout << "nie przetwożono zadnych danych\n";
        else {
            cout << "Wcyztano" << licz << "znaków";
           
           
        }
        infile.close();
        cout << dane << "\n";
       
       
       
        int i = 0;
        int ilosc_osob;
        cout << "Towarzystwo na rzecz Zachowania dobrych Wplywow:\n";
        cout << "Podaj ile chcesz wprowadzic osob:";
        cin >> ilosc_osob;
        trzd * sponsor = new trzd[ ilosc_osob ];
        for( i = 0; i < ilosc_osob; i++ )
        {
            cout << "Podaj Nazwisko Wplacajacego:\n";
            cin >> sponsor[ i ].nazwisko;
           
            cout << "Podaj kwote jaka wplaciles\n";
            cin >> sponsor[ i ].dotacja;
           
        }
        for( i = 0; i < ilosc_osob; i++ )
        {
            if( sponsor[ i ].nazwisko.length() <= 3 )
            {
                cout << "brak";
            }
           
            if( sponsor[ i ].dotacja > 10000 )
            {
                cout << "LISTA NASZYCH WSPANIALYCH SPONSOROW:\n";
               
                cout << sponsor[ i ].nazwisko << "-----" << sponsor[ i ].dotacja << endl;
            }
            else
            {
                cout << "NASI SPONSORZY:\n";
                cout << sponsor[ i ].nazwisko << "-----" << sponsor[ i ].dotacja << endl;
            }
        }
       
        delete[] sponsor;
        return 0;
    }
P-10618
szkuner
Temat założony przez niniejszego użytkownika
» 2009-10-04 15:38:39
Stworzyłem coś takiego wydaje mi sie rozwiązaniem dobry używałem zapisu do plików tak jak bym używał cin i cout. Tylko mam problem nie chce mi czytać tego pliku txt co stworzyłem notaniku. Jak ma to naprawić
C/C++
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;
const int size = 60;

struct twrz {
   
    string nazwisko;
    double dotacja;
   
};


int main()
{
    string filename;
    char temp[ 40 ];
    int liczba = 0;
    int sponsor = 0;
   
    ifstream n_file;
   
    cout << "Wprowadz nazwe pliku:";
    getline( cin, filename );
    n_file.open( filename.c_str() );
    if( !n_file.is_open() )
    {
        cout << "Otwarcie pliku:" << filename << "nieudane\n";
        cout << "blad ogolny program zostanie zakonczony\n";
        exit( EXIT_FAILURE );
    }
   
   
    while( n_file.good() && n_file.getline( temp, 20 ) )
         ++liczba;
   
    if( liczba == 0 )
    {
        cout << "W tym pliku niema zadnych danych";
        system( "pause" );
        exit( EXIT_FAILURE );
    }
    sponsor = liczba;
    cout << "Liczba sponsorow:" << sponsor << endl;
   
    twrz * spons = new twrz[ sponsor ];
   
    n_file.clear();
    for( int a = 0; a > sponsor; a++ )
    {
        cout << "Wczytano#:" << a + 1 << "\n";
        cout << "Nazwisko:" << endl;
        getline( n_file, spons[ a ].nazwisko );
        n_file >> spons[ a ].dotacja;
        n_file.ignore();
        cout << spons[ a ].nazwisko << endl;
        cout << "Sponsorzy: " << spons[ a ].dotacja;
    }
    if( n_file.eof() )
         cout << "koniec pliku.\n";
    else if( n_file.fail() )
         cout << "Blad odczytu z pliku.\n";
    else
         cout << "Blad nie oznakowany.\n";
   
    liczba = 0;
   
    cout << "\nNasi sponsorzy \n";
   
   
    for( int i = 0; i < sponsor; i++ )
    {
        if( 10000 <= spons[ i ].dotacja )
        {
            cout << spons[ i ].nazwisko << endl;
            liczba++;
        }
    }
    if( liczba == 0 )
    {
        cout << "BRAK\n";
    }
    liczba = 0;
    cout << "\nNAsi wspaniali sponsorzy: \n";
    for( int i = 0; i < sponsor; i++ )
    {
        if( 10000 > spons[ i ].dotacja )
        {
            cout << spons[ i ].nazwisko << endl;
            liczba++;
        }
    }
   
    if( liczba == 0 )
         cout << "BRAK\n";
   
   
    delete[] spons;
   
    system( "pause" );
    return 0;
}
P-10631
Thud
» 2009-10-04 17:34:45
Z tego co patrzę, to pliki nie mogą się otworzyć, bo nie istnieją. "Domyślne" biblioteki i/o nie obsługują tego, jednakże istnieją także w bibliotece standardowej nagłówki, w których znajdują się funkcja umożliwiające tworzenie plików.

Popatrz na mode, tam masz rozwiązanie, jednakże wystarczy że stworzysz plik by cstdio, a później wyłączysz  "transmisje" z programu do pliku by cstdio i przejdziesz na podstawowe i/o.
P-10633
szkuner
Temat założony przez niniejszego użytkownika
» 2009-10-04 18:08:17
Dzieki za odpowiedź udało mi się już wczytać plik tą metodą teraz jednak
program wogóle nie wyświetla mi pobranych z pliku stringów chociaż liczby wyswietla format w pliku txt  wyglada tak:
4 //liczba sponsorów
peter hond
10000 //dotacja
harakiri demode // nazwisko
222222
oczywiście tego po ukośnikach nie mam w pliku:)
Żeby go wczytać musiałem umiescić go w tym samym folderze co był program :p
C/C++
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;
const int size = 60;

struct twrz {
   
    string nazwisko;
    double dotacja;
   
};


int main()
{
    string filename;
    char temp[ 40 ];
    int liczba = 0;
    int sponsor = 0;
   
    ifstream n_file;
   
    cout << "Wprowadz nazwe pliku:";
    getline( cin, filename );
    n_file.open( filename.c_str() );
    if( !n_file.is_open() )
    {
        cout << "Otwarcie pliku:" << filename << "nieudane\n";
        cout << "blad ogolny program zostanie zakonczony\n";
        exit( EXIT_FAILURE );
    }
   
   
    while( n_file.good() && n_file.getline( temp, 20 ) )
         ++liczba;
   
    if( liczba == 0 )
    {
        cout << "W tym pliku niema zadnych danych";
        system( "pause" );
        exit( EXIT_FAILURE );
    }
    sponsor = liczba / 2;
    cout << "Liczba sponsorow:\n" << sponsor << endl;
   
    twrz * spons = new twrz[ sponsor ];
   
    n_file.clear();
    n_file.seekg( 0, ios::beg );
    for( int a = 0; a < sponsor; a++ )
    {
        cout << "Wczytano#:" << a + 1 << "\n";
        cout << "Nazwisko:\n" << endl;
        getline( n_file, spons[ a ].nazwisko );
       
        n_file >> spons[ a ].dotacja;
        n_file.ignore(); //ignoruje '\n'
        cout << spons[ a ].nazwisko << endl;
        cout << "Sponsorzy:\n" << spons[ a ].dotacja;
    }
    if( n_file.eof() )
         cout << "koniec pliku.\n";
    else if( n_file.fail() )
         cout << "Blad odczytu z pliku.\n";
    else
         cout << "Blad nie oznakowany.\n";
   
    liczba = 0;
   
    cout << "\nNasi sponsorzy \n";
   
   
    for( int i = 0; i < sponsor; i++ )
    {
        if( 10000 <= spons[ i ].dotacja )
        {
            cout << spons[ i ].nazwisko << endl;
            liczba++;
        }
    }
    if( liczba == 0 )
    {
        cout << "BRAK\n";
    }
    liczba = 0;
    cout << "\nNAsi wspaniali sponsorzy: \n";
    for( int i = 0; i < sponsor; i++ )
    {
        if( 10000 > spons[ i ].dotacja )
        {
            cout << spons[ i ].nazwisko << endl;
            liczba++;
        }
    }
   
    if( liczba == 0 )
         cout << "BRAK\n";
   
   
    delete[] spons;
   
    system( "pause" );
    return 0;
}
P-10634
« 1 »
  Strona 1 z 1