Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

jak wczytać liczby z pliku bezpośrednio do tablicy.

Ostatnio zmodyfikowano 2017-09-20 23:01
Autor Wiadomość
Lentyl
Temat założony przez niniejszego użytkownika
jak wczytać liczby z pliku bezpośrednio do tablicy.
» 2017-09-19 22:28:15
Witam rozwiązywałem jedną z prac domowych "Wczytywanie danych z pliku za pomocą operatora >>" i pomyślałem sobie że fajniej by było wczytać te zmienne z pliku od razu do tablicy Plik wyglądał by tak. Oczywiście mój kod nie działa nawet nie wiem czy można go w jakiś sposób zmodyfikować żeby miał jakąś wartość. Za wszystkie podpowiedzi serdecznie dziękuje

4 3 6 54 7 83 6 42 57

C/C++
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;




int main()
{
    int tablica[ 20 ] = { 0 };
   
    int a = 0;
   
    fstream plik;
   
    plik.open( "Dane do zadania.txt", ios::in );
   
    if( !plik.good() )
   
         cout << "Nie udalo sie odczytac pliku" << endl;
   
    exit( 0 );
   
    while( plik.good() )
    {
        plik >> tablica[ a++ ];
    }
   
    plik.close();
   
    for( int i = 0; i < a; i++ )
   
         cout << tablica[ i ] << endl;
   
   
   
    return 0;
}
P-165009
Kinexity
» 2017-09-19 23:08:24
Jeżeli chcesz przechowywać liczby w pliku, to zdecydowanie polecam robić to przy pomocy zapisu binarnego - jest prościej niż ze strumieniami.
P-165011
mateczek
» 2017-09-19 23:12:12
C/C++
#include <iostream>
#include <fstream>
using namespace std;

int main() {
    int tablica[ 20 ] = { 0 };
    fstream plik( "dane.txt" );
    if( !plik ) { //                                             !!!!!! brak nawiasów klamrowych !!!!
        cout << "Nie udalo sie odczytac pliku" << endl;
        return 0;
    }
    int a = 0;
    while( plik >> tablica[ a++ ] );
   
    for( int i = 0; i < a - 1; i++ ) {
        cout << tablica[ i ] << " ";
    }
}
P-165012
carlosmay
» 2017-09-20 00:52:12
C/C++
std::size_t a;
for( a = 0; plik >> tablica[ a ] && a < 20; ++a );

P-165016
maly7
» 2017-09-20 13:12:45
Lentyl, twój program działa dobrze, jedyny problem znajduje się tutaj:
C/C++
if( !plik.good() )

     cout << "Nie udalo sie odczytac pliku" << endl;

exit( 0 );

Otóż instrukcja exit nie znajduje się w ifie, więc za każdym razem się wykonuje i program się zakańcza.
Po prostu wstaw tam klamry i będzie ok.
P-165018
Lentyl
Temat założony przez niniejszego użytkownika
Sumowanie tablicy i przypisywanie wartości
» 2017-09-20 21:43:46
Wczoraj zamieściłem kod związany z wczytaniem bezpośrednio liczb z pliku do tablicy za wszystkie odpowiedzi bardzo dziękuje. Tablice oczywiście później chciałem zsumować jednak jeżeli wyzeruje sumę wynik wychodzi poprawny 207 jeżeli jednak nie wynik jest niepoprawny 205 mniejszy o 2 Pytanie może infantylne a może przeoczyłem coś w kursie ale Stephen Prata także o tym nic nie wspomina w rozdziale o przypisywaniu wartości pytanie brzmi : Czym to jest spowodowane czy tak jak w przypadku tablicy są to śmieci typu przypadkowe liczby dlaczego zmienna której nie jest przypisana wartość nie posiada na samym wstępie wartości = 0; ?
C/C++
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;




int main()
{
   
    fstream plik;
   
    plik.open( "Dane do zadania.txt", ios::in );
   
    if( !plik.good() )
    {
       
        cout << "Nie udalo sie odczytac pliku" << endl;
       
        exit( 0 );
    }
    int tablica[ 30 ] = { 0 };
    int a = 0;
    while( plik.good() )
    {
        plik >> tablica[ a++ ];
    }
   
    plik.close();
   
    int suma = 0;
   
    for( int i = 0; i < a; i++ )
    {
        cout << tablica[ i ] << endl;
        suma += tablica[ i ];
    }
    cout << " suma twojej tablicy to : " << endl;
    cout << suma << endl;
   
    cout << "Twoja 8 liczba to : " << tablica[ 7 ] << endl;
   
   
   
    return 0;
}
P-165048
carlosmay
» 2017-09-20 23:01:10
Zmienne statyczne inicjalizowane są wartościami zerowymi, natomiast zmienne lokalne nie są inicjalizowane i posiadają
przypadkowe wartości. Tablice, jeśli nie są zainicjalizowane zeramie, zawsze zawierają przypadkowe wartości.
Używanie niezainicjalizowanej zmiennej jest UB.
P-165054
« 1 »
  Strona 1 z 1