Wczytywanie liczb do tablicy z pliku tekstowego

Problemy i ich rozwiązania w C++.
wojt12322

Wczytywanie liczb do tablicy z pliku tekstowego

Post przez wojt12322 »

Witam, mialem sporą przerwe z programowaniem, i wogóle moja wiedza tak i tak była nikła na ten temat wiec mam problem.

Code: Zaznacz cały

#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;
int main()
{
    bool tablica[500];
    int a, i;
    ifstream liczby("liczby.txt");
    if (!liczby)
    {
        cout << "Nie mozna otworzyc pliku";
        getchar();
        return 1;
    }
    while (!liczby.eof())
    {
       
        for (i=0; i<500; i++)
        liczby << tablica[i];
        
    }   
        
    liczby.close();
    for (int i=0; i<500; i++)
    cout << tablica[i];
    getchar();
    return 0;
}
Program nie działa, ale tyle zdołałem sam napisać.
Chcialbym napisac program ktory wczytuje liczby do tablicy jednoelementowej. Zeby mozna bylo je wyswietlic i wykonywac jakies operacje na nich. Liczby sa uporzadkowane w sposób:

121
42
367
47
532
656

Tylko już siedze nad tym ponad 3 h i nie moge nic wymyśleć, chodzi mi o proste rozwiazanie tego problemu.
Zmieniam troszkę tytuł posta.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Wczytywanie liczb do tablicy

Post przez Morfidon »

Witam,

Prawidłowy kod:

Code: Zaznacz cały

#include <iostream>
#include <fstream>

using namespace std;
int main()
{
    int tablica[500] = {0};
    int tmp = 0;
    ifstream liczby("liczby.txt");
    
    if (!liczby)
    {
        cout << "Nie mozna otworzyc pliku";
        getchar();
        return 1;
    }

    while (!liczby.eof())
       liczby >> tablica[tmp++];  
        
    liczby.close();
    
    for (int i=0; i<tmp; i++)
         cout << tablica[i] << endl;

    getchar();
    return 0;
}
Popełnił Pan trochę błędów, jeżeli ma Pan pytania do poprawionego kodu to proszę pytać.

Pozdrawiam,

Arkadiusz Włodarczyk
wojt12322

Re: Wczytywanie liczb do tablicy

Post przez wojt12322 »

Moje pytania do kodu:

Code: Zaznacz cały

#include <iostream>
#include <fstream>

using namespace std;
int main()
{
    int tablica[500] = {0};                               // <----dlaczegotaki zapis
    int tmp = 0;
    ifstream liczby("liczby.txt");
   
    if (!liczby)
    {
        cout << "Nie mozna otworzyc pliku";
        getchar();
        return 1;
    }

    while (!liczby.eof())
       liczby >> tablica[tmp++]    // <---- tablica[tmp++] te [tmp++] to jest tak jakby numer wiersza?; 

A gdyby liczby były np podane tak:
32 5445 43434
45 434 4334
666 767 43434
444 566 4434
3456 5656 6753

Liczby oddzielone sa spacjami.
Jak by to wyglądało do wpisu tablicy 2- elementowej? Jak to Pan by powiedział jak zrobić oświecił by mnie Pan całkowicie...
A za poprzednią odpowiedz bardzo dziękuje...
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Wczytywanie liczb do tablicy

Post przez Morfidon »

Zapis:

Code: Zaznacz cały

int tablica[500] = {0};
oznacza to samo co:

Code: Zaznacz cały

for (int i = 0; i < tablica.length; i++)
  tablica[i] = 0;
czyli jest to wyzerowanie tablicy, powinno się tak zrobić, aby nie latały w tablicy jakieś śmieci.

tmp++ jest to post-inkrementacja, czyli najpierw wypisuje wartość tmp, a następnie wykonuje operację temp=temp+1

Jeżeli nie wie Pan co robi post-inkrementacja to znaczy, że nie oglądał Pan mojego kursu, zapraszam do zapoznania się z nim: http://videokurs.pl/kurs-c.php
wojt12322 napisał(a):Jak by to wyglądało do wpisu tablicy 2- elementowej? Jak to Pan by powiedział jak zrobić oświecił by mnie Pan całkowicie...
Rozumiem, że chodzi Panu o tablice dwuwymiarową? To zależy od kontekstu. Wszystko w programowaniu tworzy się tak jak się chcę - dosłownie mówiąc.
wojt12322

Re: Wczytywanie liczb do tablicy z pliku tekstowego

Post przez wojt12322 »

Oglądałem kurs "Video Kurs C++ Algorytmy" ale to bylo rok temu, jak się z niego uczyłem, za tydzień mam mature, na szczęscie podstawę, i jedyne co potrzebuję ogranąć to tylko te wczytywtywanie plików a reszta jest w tym Pana kursie co oglądałem, więc mała powtórka i wszystko będzie dobrze. A co do tej tablicy 2-wymiarowej. chodzi mi oto że w zadaniach na maturze są niekiedy takie przyklady ze jest plik *txt w którym znajdują sie liczby tak jak wypisalem w poprzednim poście, i trzeba zsumować lewą z środkową i prawą i wynik zapisać do innej tablicy. Gdybym wiedział jak wypisać te liczby do tablicy z resztą zadania poradziłbym sobie.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Wczytywanie liczb do tablicy z pliku tekstowego

Post przez Morfidon »

Video Kurs C++ - Algorytmy to jest treningowy kurs, który zakłada, że ma się wiedzę z poprzedniego kursu.

No to nie lepiej wczytać kolejno 3 liczby, dodać je, a następnie zapisać w tablicy i tak robić z każdymi 3 napotkanymi liczbami? po co tu tablica dwuwymiarowa?
wojt12322

Re: Wczytywanie liczb do tablicy z pliku tekstowego

Post przez wojt12322 »

Gdy wczytuję ten plik: http://www.nh-renewal.yoyo.pl/liczby.txt
składający się z 500 wierszy, wczytuje mi ten program tylko od 202 wiersza. Dlaczego nie wszystkie? I odstęp w postaci "enter" czyta jako "0".
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Wczytywanie liczb do tablicy z pliku tekstowego

Post przez Morfidon »

Wczytuje wszystkie, tylko że konsola ma limit wyświetlania wierszy. Może Pan dla testu przepisać wartości z jednego pliku do drugiego.

Enter, a raczej pusty odstęp, czyta jako zero, bo program spodziewał się tam liczby całkowitej. Spotkał tam odstęp, więc rzutował go na l. całkowitą, którą jest 0.
Post Reply