Switch - bardzo dużo case'ów, przypisanie nr case'a do nr wiersza w pliku txt
Ostatnio zmodyfikowano 2016-12-07 16:40
| cichy3993 Temat założony przez niniejszego użytkownika | Switch - bardzo dużo case'ów, przypisanie nr case'a do nr wiersza w pliku txt » 2016-12-06 22:33:47 Cześć, tak jak w temacie. Bawię się w robienie programu z "bazą danych" spisaną w pliku txt. Stworzyłem stringową tablicę (łącznie z 1704 komórkami) i chcę każdej komórce przypisać zawartość odpowiadającemu jej wierszowi w "bazie", np. tablica[0], będzie miała zawartość 1. wiersza, tablica[10], będzie miała zawartość 9. wiersza itd. Problem rodzi się w tym, że aby to poprzypisywać potrzebuję użyć Switcha i case'ować za każdym razem jak chcę linijkę przypisać komórce, a że linijek w "bazie" mam 1704,to musiałbym wypisywać 1704 case'y. Pytanie brzmi: Czy da się ten zapis jakoś uprościć, tzn zamiast pisać switch( nr_linijki ){
 case 1: tablica[ x ] = linia;
 case 2: tablica[ x ] = linia;
 ...
 case 1704: tablica[ x ] = linia;
 }
 
zaznaczyć w jakiś magiczny sposób zbiór case'ów, dla którego zostanie wykonana ta sama instrukcja, np jak w matematyce zaznaczaemy to (1, 1704) albo po prostu 1-1704. Z góry dziękuję za odpowiedź! | 
|  | 
| Monika90 | » 2016-12-06 23:12:26 const int rozmiar = 1704;std::string tablica[ rozmiar ];
 
 int i = 0;
 while( i < rozmiar && std::getline( plik, tablica[ i ] ) )
 {
 ++i;
 }
 
 std::cout << "wczytano " << i << " wierszy" << std::endl;
 
| tablica[10], będzie miała zawartość 9. wiersza itd.
 
 | 
 Raczej jedenastego. | 
|  | 
| mokrowski | » 2016-12-07 13:17:47 #include <iostream>#include <string>
 #include <fstream>
 #include <algorithm>
 
 using namespace std;
 
 constexpr static int rozmiar = 1704;
 
 string tablica[ rozmiar ];
 
 
 void pokaz_tablice()
 {
 for( int i = 0; i < rozmiar; ++i )
 cout << tablica[ i ] << endl;
 
 }
 
 int main()
 {
 ifstream plik( "/tmp/dane.txt" );
 
 if( !plik )
 {
 cerr << "Błąd otwarcia pliku" << endl;
 exit( 1 );
 }
 
 generate( begin( tablica ), end( tablica ),[ & plik ]() {
 string linia;
 getline( plik, linia );
 return linia;
 } );
 
 pokaz_tablice();
 }
 
 | 
|  | 
| carlosmay | » 2016-12-07 13:52:05 | constexpr static int rozmiar = 1704;
 string tablica[ rozmiar ];
 | 
 Tak na poważnie globalnie? | 
|  | 
| mokrowski | » 2016-12-07 16:40:59 No oczywiście że nie na poważnie globalnie :-) "Globale to samo zło" ale jako przykład niech ma i nie szuka :-)Raczej chodziło o pokazanie że większość pętli i ew. przetwarzania danych jest już w algorytmach i warto z nich korzystać.
 | 
|  | 
| « 1 » |