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

Sortowanie, wczytywanie do tablicy

0 głosów
361 wizyt
pytanie zadane 31 stycznia 2020 w C i C++ przez disi22 Początkujący (300 p.)

Witam, w niedziele czeka mnie kolokwium z programowanie. Chciec nie chciec trzeba je zdac. Profesorowie dodali przykladowe kolokwia z poprzednich lat etc. 
W wielu z nich potwarza sie temat wczytywania pliku do tablicy i posortowania danych w tablicy np po nazwie. 

Moim problemem jest, ze umiem wczytac plik ale nie wiem jak go wczytac aby byl w tablicy... z sortowaniem tez nie mam problemu, ale chcialbym zrobic to profesjonalniej typu wczytac plik do tablicy np tablicaPotworow wyswietlic go na ekran i potem posortowac i znow wyswietlic na ekran. Moglby mi ktos pomoc jak wczytac plik w tablice? 

Nizej dodaje kod w ktorym sortowalem "manualnie" ale to bez sensu

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <string>
using namespace std;

int main()
{
    fstream plik;
    plik.open("potwory.txt",ios::in);

    if(plik.good()==false)
    {
        cout<<"Nie udalo sie wczytac pliku";
        exit(0);
    }

        int nr_linii=1;
        string linia;



        while(getline(plik,linia))
        {
                cout<<linia<<endl;
        }



        nr_linii++;
        plik.close();
    cout<<endl<<endl;

    string tablicaPotworow[16]={"Strzyga","Chochlik","Hydra","Diabel","Sukub","Aniol","Smok","Zjawa","Upior","Rycerz","Zombie","Ghul","Hiena","Troll","Olbrzym","Krasnolud"};

    sort(tablicaPotworow, tablicaPotworow+16);

    for(int i=0; i<16; i++)
        cout<<tablicaPotworow[i]<<endl;


    return 0;
}

Tutaj sam zakladam tablicei ja uzupelniam, jak uzupelnic ja plikiem? 

1 odpowiedź

0 głosów
odpowiedź 31 stycznia 2020 przez dawid2002 Mądrala (5,190 p.)

O ile dobrze rozumiem, chcesz wczytać po kolei każdą linię z pliku i umieścić te linie w poszczególnych elementach tablicy? Jeśli tak, to możesz zrobić tak:

string tablicaPotworow[16];     // zakładam, że ta tablica jest 16-elementowa
int i = 0;
    
while (i < 16 && getline(plik, tablicaPotworow[i]))
     ++i;

Dla "i" równego zero przypisujesz to co jest w pierwszej linii, dla "i" równego 1 przypisujesz treść drugiej linii itd.

Można by jeszcze zmienić ten kod i zapisać go na przykład tak:

while (i < 16 && !plik.eof())                          // eof() - zwraca wartość prawda (true), jeśli "kursor" dotarł do końca pliku
        getline(plik, tablicaPotworow[i++]);   // tutaj jest ważne aby ++ były po "i". Jeśli nie wiesz dlaczego poczytaj o różnicach między preinkrementacją a postinkrementacją

 

Podobne pytania

0 głosów
1 odpowiedź 428 wizyt
pytanie zadane 21 grudnia 2019 w C i C++ przez pistul123 Nowicjusz (120 p.)
0 głosów
3 odpowiedzi 447 wizyt
pytanie zadane 26 marca 2019 w C i C++ przez Misanthrope2 Początkujący (360 p.)
0 głosów
1 odpowiedź 2,109 wizyt
pytanie zadane 6 lutego 2017 w C i C++ przez Oskar Gramsz Początkujący (270 p.)

93,599 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,082 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

Kursy INF.02 i INF.03
...