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 » |