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

C++, prosty program, zamiana pliku txt na tablicę

0 głosów
100 wizyt
pytanie zadane 6 dni temu w C i C++ przez alaaaa17 Nowicjusz (120 p.)
Temat zadania: Wyświetlanie informacji o wybranym atomie pierwiastka po podaniu liczby atomowej lub symbolu pierwiastka.
Dane wejściowe: tablica z informacjami o pierwiastkach liczba atomowa symbol pierwiastka
Dane wyjściowe: informacje o atomie pierwiastka.
(użytkownik wczytuje informacje o pierwiastkach z pliku, użytkownik wpisuje z klawiatury liczbę atomową albo symbol pierwiastka (tj. może wybrać to, co chce wpisać))

Stworzyłam plik txt, w jednej linijce umiecilam dane o jednym pierwiastku, oddzieliłam je spacją, wczytałam plik do programu i teram mam problem. Zatanawiałam się nad rozwiązaniem i myślałam żeby zamienić plik na tablicę, ale nie wiem czy to pomoże..
Ktoś ma jakieś pomysły?
komentarz 6 dni temu przez draghan Szeryf (88,410 p.)
Jaki przyjęłaś format pliku tekstowego? Tzn. jak opisujesz pojedynczy pierwiastek?
komentarz 6 dni temu przez alaaaa17 Nowicjusz (120 p.)
H wodór 1,008
He hel 4,003
Li lit 6,94
Be beryl 9,012
B bor 10,81
C węgiel 12,011
N azot 14,007
O tlen 15,999

 

to jest fragment tekstu txt

2 odpowiedzi

+2 głosów
odpowiedź 6 dni temu przez j23 Stary wyjadacz (12,380 p.)

Czytać z pliku (ifs) można tak:

struct pierwiastek
{
	string symbol;
	string nazwa;
	double latomowa;
};


pierwiastek p;

while( ifs >> p.symbol >> p.nazwa >> p.latomowa)
{
	/* tu dodajesz 'p' do jakiejś tablicy/vectora */
}

 

+2 głosów
odpowiedź 6 dni temu przez mokrowski Pasjonat (24,720 p.)

Będę starał się napisać jak najprościej. Jeśli zbyt prosto... nie bij :-)

Jak masz w wierszu 3 elementy to powinnaś się zastanowić według którego lub których będzie wykonywane wyszukiwanie. 3 dane tworzą rekord. Nie wiem jakie struktury już znasz jeśli chodzi o język C++. Dość że te 3 dane powinny być "połączone" w 1 agregat (czyli zespół danych). 

Taki agregat możesz następnie umieścić w:

  1. tablicy - czego nie polecam bo możesz łatwo popełnić błąd :-)
  2. vector - to już lepiej
  3. map 'ie - struktura zawierająca klucz wskazujący na wartość. Automatycznie "się sortuje"
  4. unordered_map ' ie - tak jak wyżej ale nie jest posortowana więc ... jesz bardzo szybka :-)

Dla pierwszych 2 podpunktów, potencjalne wyszukiwanie będzie w czasie liniowym zależnym od ilości wpisów. Dla punktu 3 i 4 będzie to o wiele szybsze (dla 4 czas stały). Punkt 1 będzie obarczony również pewną uciążliwością związaną z rozmiarem. Jeśli nie przeczytasz całego pliku, nie wiesz jak duża ma być taka tablica. Chyba że... w 1 wierszu pliku umieścisz ilość rekordów :-)

komentarz 6 dni temu przez j23 Stary wyjadacz (12,380 p.)

(...) nie wiesz jak duża ma być taka tablica

Pierwiastków jest 118, zatem aż tak dużych dylematów mieć nie powinna ;) Przy tak małych wielkościach wyszukiwanie liniowe też nie jest problemem.

komentarz 6 dni temu przez mokrowski Pasjonat (24,720 p.)
Nie :-)

Podobne pytania

0 głosów
2 odpowiedzi 143 wizyt
pytanie zadane 27 lutego w C i C++ przez krzakurts Obywatel (1,340 p.)
0 głosów
5 odpowiedzi 144 wizyt
0 głosów
0 odpowiedzi 104 wizyt
...