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

Wczytywanie z pliku. Jak zrobić, aby program czytał dalej daną linijke, a nie przechodził do nowej.

Ostatnio zmodyfikowano 2014-06-03 10:56
Autor Wiadomość
gustawson
Temat założony przez niniejszego użytkownika
Wczytywanie z pliku. Jak zrobić, aby program czytał dalej daną linijke, a nie przechodził do nowej.
» 2014-06-03 10:30:58
Witam!

Mam taki problem.
Mianowicie mam plik wejściowy (link -> http://speedy.sh/eTHaY/piwko.txt)

I kiedy korzystam ze struktur wczytuje się wszystko prawidłowo

C/C++
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

struct SPiwo
{
    unsigned wysokosc;
    double promien_podstawy;
    string marka;
};
struct SKarton
{
    SPiwo * piwa;
    unsigned ile_piw;
    int kod;
};

SKarton wczytaj_piwa( ifstream & iplik, unsigned & rozmiar ) //referencja przy rozmiarze matole
{
    if( iplik.good() )
    {
        SKarton piweczka;
        iplik >> rozmiar;
       
        SPiwo * tab = new SPiwo[ rozmiar ];
        piweczka.ile_piw = rozmiar;
        cout << "Ile_piw: " << rozmiar << endl;
       
        for( unsigned i = 0; i < rozmiar; i++ )
        {
            iplik >> tab[ i ].wysokosc;
            cout << tab[ i ].wysokosc << " ";
            iplik >> tab[ i ].promien_podstawy;
            cout << tab[ i ].promien_podstawy << " ";
            iplik >> tab[ i ].marka;
            cout << tab[ i ].marka << " " << endl;
        }
    }
    else
    {
        cerr << "Blad pliku" << endl;
    }
}

int main()
{
    unsigned rozmiar;
    ifstream iplik;
    iplik.open( "piwko.txt", ios::in );
    wczytaj_piwa( iplik, rozmiar );
   
    iplik.close();
}

Wiem,że niektore zmienne są niepotrzebne, ale są zostawione na poczet dalszej walki z zadaniem.
Wynik na coutach mam takich jak plik źródłowy.

Natomiast kiedy nie chce korzystać ze struktur a na tablicach chce to niestety nie moge sobie poradzić bo cały czas powtarza początkowy wyraz z danej linijki

O to moj kod
C/C++
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

void wczytaj( ifstream & iplik, unsigned & rozmiar )
{
   
    if( iplik.good() )
    {
        iplik >> rozmiar;
        cout << "Rozmiar " << rozmiar << endl;
        double * wysokosc = new double[ rozmiar ];
        double * promien = new double[ rozmiar ];
        string * marka = new string[ rozmiar ];
       
        for( unsigned i = 0; i < rozmiar; i++ )
        {
            iplik >> wysokosc[ i ];
            cout << wysokosc[ i ] << " ";
            iplik >> promien[ i ];
            cout << wysokosc[ i ] << " ";
            iplik >> marka[ i ];
            cout << wysokosc[ i ] << endl;
        }
    }
    else
    {
        cerr << "Blad pliku" << endl;
    }
   
}



int main()
{
    ifstream iplik;
    unsigned rozmiar;
    iplik.open( "piwko.txt" );
    wczytaj( iplik, rozmiar );
   
}

Moje pytanie do Was.
Co zrobić, aby program po zobaczeniu tego białego znaku w tym przypadku spacji, przechodził dalej a nie powtarzał pierwszego wyrazu?
P-111343
00Andre
» 2014-06-03 10:43:31
W petli for w funkcji void zapis przy wypisywaniu na ekran dawałeś tylko wysokość !
Twój kod:
C/C++
for( unsigned i = 0; i < rozmiar; i++ )
{
    iplik >> wysokosc[ i ];
    cout << wysokosc[ i ] << " ";
    iplik >> promien[ i ];
    cout << wysokosc[ i ] << " ";
    iplik >> marka[ i ];
    cout << wysokosc[ i ] << endl;
}

A mój poprawiony:
C/C++
for( unsigned i = 0; i < rozmiar; i++ )
{
    iplik >> wysokosc[ i ];
    cout << wysokosc[ i ] << " ";
    iplik >> promien[ i ];
    cout << promien[ i ] << " ";
    iplik >> marka[ i ];
    cout << marka[ i ] << endl;
}

Wynik programu twojego kodu:

Rozmiar 3
20 20 20
22 22 22
21 21 21

Wynik programu mojego:

Rozmiar 3
20 3.5 Klasyczne
22 3.0 Niepasteryzowane
21 3.65 Jasno-ciemne

00Andre
P-111344
gustawson
Temat założony przez niniejszego użytkownika
» 2014-06-03 10:50:33
Jaka głupota, aż wstyd się przyznać.
Jednak to racja że kopiuj wklej to największy wróg osoby próbującej programowac :D
dzięki za pomoc :)
P-111345
00Andre
» 2014-06-03 10:56:09
Dokładnie, kopiowanie jest wygodne np. jak mam duży ko ale trzeba pamiętać, aby poprawić go przy każdym innym kopiowaniu ;)
P-111347
« 1 »
  Strona 1 z 1