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

Wczytywanie wyrazów do tablicy

Ostatnio zmodyfikowano 2017-01-19 18:47
Autor Wiadomość
szp4n3r
Temat założony przez niniejszego użytkownika
Wczytywanie wyrazów do tablicy
» 2017-01-17 14:41:24
Cześć
Potrzebuje funkcji która wczyta mi kolejne wyrazy do tablicy w ten sposób. Przykład:
czwartek 12 zrobic obiad
tab[0]=czwartek
tab[1]=12
tab[2]=zrobic obiad

Ogólnie będę miał kilka takich "zdań" i muszę je posortować według daty i godziny.
Myślałem wczytać to do tablicy 2wymiarowej i odpowiednio sortować.
Chyba, że ma ktoś lepsze rozwiązanie?
P-156544
czaffik
» 2017-01-17 17:19:06
Stworzyć strukturę lub obiekt, powiedzmy:
C/C++
struct Dzialanie
{
    string dzien;
    int godzina;
    string doZrobienia;
};
i potem wpychać to do vectora albo tablicy jak ci wygodniej.
P-156553
szp4n3r
Temat założony przez niniejszego użytkownika
» 2017-01-17 18:31:27
Ok, a co jeżeli chciałbym wczytać te dane z pliku? Która funkcja wczytuje ciąg znaków aż znajdzie biały znak ?
P-156557
czaffik
» 2017-01-17 19:27:33
Jeśli się nie mylę to zazwyczaj operator >> czyta do napotkania białego znaku.
P-156564
karambaHZP
» 2017-01-17 19:32:22
std::getline()
 też czyta do terminatora ustawionego w trzecim argumencie.
P-156565
szp4n3r
Temat założony przez niniejszego użytkownika
» 2017-01-18 20:55:00
Pomoże ktoś ? Wywala błąd przy kompilacji - coś nie tak z wczytywaniem tekstu do tablicy.
C/C++
#include <fstream>
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <conio.h>

using namespace std;

struct wiersz
{
    int dzien;
    int godzina;
    char nazwa;
};

void Sortowanie( char ** tab, int left, int right )
{
    int i = left;
    int j = right;
    int first;
    first =( left + right ) / 2;
    char x = tab[ first ][ 0 ];
    do
    {
        while( tab[ i ][ 0 ] < x )
             i++;
       
        while( tab[ j ][ 0 ] > x )
             j--;
       
        if( i <= j )
        {
            swap( tab[ i ][ 0 ], tab[ j ][ 0 ] );
            i++;
            j--;
        }
    } while( i <= j );
   
    if( left < j ) Sortowanie( tab, left, j );
   
    if( right > i ) Sortowanie( tab, i, right );
   
}

int main() {
   
    int ilosc = 10;
   
    wiersz tab[ ilosc ]; //----------deklaracja wielkości tablicy
   
    std::fstream plik; //----------Otwieranie pliku.start
    plik.open( "programy.txt", std::ios::in );
    if( plik.good() == true )
    {
        cout << "Uzyskano dostep do pliku!" << endl;
    } else cout << "Dostep do pliku zostal zabroniony!" << endl; //----------Otwieranie pliku.stop
   
    for( int i = 0; i < ilosc; i++ ) { //-----------wczytywanie z pliku.start
        getline( plik, tab[ i ].dzien, '\t' );
        getline( plik, tab[ i ].godzina, '\t' );
        getline( plik, tab[ i ].nazwa );
    } //-----------wczytywanie z pliku.stop
   
    // Sortowanie(tab,0,ilosc-1);
   
    for( int i = 0; i < ilosc; i++ ) { //-----------wypisywanie liczb.start
        cout << tab[ i ].dzien << endl;
    }; //-----------wypisywanie liczb.stop
   
    return 0;
}
P-156613
karambaHZP
» 2017-01-18 22:43:03
Pomoże ktoś ? Wywala błąd przy kompilacji
A gdzie treść błędu?
Kompilator po to je wyświetla, aby łatwiej było namierzyć miejsce błędu (zazwyczaj).

Przy okazji pokaż zawartość pliku.

Wczytywanie z pliku wykonuje się niezależnie od powodzenia otwierania pliku.
P-156641
szp4n3r
Temat założony przez niniejszego użytkownika
» 2017-01-19 18:06:22
[ Error ] no matching function for call to 'getline(std::fstream&, int&, char)'

A tutaj pierwsze dwa wiersze wczytywanego pliku:
20.01 6:00 Pytanie na sniadanie
21.01 7:00 Pytanie na sniadanie
P-156665
« 1 » 2
  Strona 1 z 2 Następna strona