Wczytanie słownika do tablicy dynamicznej

0

Witam
Mam problem z wczytaniem słownika do tablicy dynamicznej. Na początku w petli while zliczam do zmiennej ile jest linii a następnie przesuwam wskaźnik pliku na jego początek i chce wczytać dane do utworzonej tablicy dynamicznej jednak nic nie wczytuje. Z góry dziękuje za pomoc.

Poniżej zamieszczam kod źródłowy:

#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

struct data{
       char key;
       string signs;
       };
       

int main(int argc, char *argv[])
{
    data tab[8];
    tab[0].key='2';  tab[0].signs="abc";
    tab[1].key='3';  tab[1].signs="def";
    tab[2].key='4';  tab[2].signs="ghi"; 
    tab[3].key='5';  tab[3].signs="jkl";
    tab[4].key='6';  tab[4].signs="mno";
    tab[5].key='7';  tab[5].signs="pqrs";
    tab[6].key='8';  tab[6].signs="tuv"; 
    tab[7].key='9';  tab[7].signs="wxyz";
    
    ifstream odczyt;
    odczyt.open("test.txt");
    
    string dane; //zmienna do ktorej wczytujemy cyfry
    
    int k=0; string line; //zmienne do policzenia ilości wierszy
    
    while(!odczyt.eof()){
                         getline(odczyt,line);
                         cout<<k<<". "<<line<<endl;
                         k++;
                         }
    
    int pozycja = odczyt.tellg(); // Sprawdzamy pozycję
    cout<<"Position: "<<pozycja<<endl;
    odczyt.seekg(0, ios::beg);
    
    pozycja = odczyt.tellg(); // Sprawdzamy pozycję
    cout<<"Position: "<<pozycja<<endl;
    
    string *tablica=new string[k];
   
    for (int i=0;i<k;i++){
        odczyt>>tablica[i];
        cout<<"Tablica "<<i<<". "<<tablica[i]<<endl;
        }
        
        
    cout<<"Wprowadz dane w postaci cyfr\n";
    cin>>dane;
    
    int i=0;  
    while (i<dane.length()){
          for (int j=0;j<8;j++){
              if (dane[i]==tab[j].key){
                                       cout<<tab[j].signs<<endl;
                                       }
              }
              i++;
          }
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

odczyt.clear();
odczyt.seekg(0,ios::beg);

0

Pomogło, dzięki bardzo :)
A teraz pytanie z inne beczki. Mam za zadanie napisać program który po wpisaniu określonej sekwencji liczb będzie dopasowywał możliwe słowa np. 568 -> kot. Nie mam zielonego pojęcia jak za to się zabrać. Wyszukiwanie liniowe chyba tutaj raczej nie ma racji bytu bo słownik jest obszerny także złożoność liniowa O(n) wyszukiwania odpada. Z góry dziękuje za jakieś wskazówki i porady ;D

0

metoda bisekcji - O(log(N)),
przy równomiernie ułożonych liczbach - O(log(log(N)))

1 użytkowników online, w tym zalogowanych: 0, gości: 1