Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: [c++] wczytywanie liczb z pliku do tablicy  (Przeczytany 3275 razy)

kordi

  • Gość
[c++] wczytywanie liczb z pliku do tablicy
« dnia: 2012-10-10, 13:04:32 »
witajcie!
 Mam plik z 3 kolumnami liczb i chcialabym wczytac je do tablicy. Stworzylam nastepujacy kod:
#include
#include
#include
using namespace std;
   int main()
{

    ifstream plik("wyniki.txt");
    if(!plik.is_open())return 0;
    int i = 0,j=0;
    string s= "";

    while(!(getline(plik,s)).eof())
         ++i;
         ++j;

    int tablica[100][3];
    plik.clear();
    plik.seekg(0);

    i=0;
    j=0;
    while(!getline(plik,s).eof())
     {
     tablica[i][j]= atof(s.c_str());
     ++i;
     ++j;
     }
    for(int i=0;i<100;++i)
    { for(int j=0;j<3;++j)
      {

       cout<      }
    }
    cin.get();


    return 0;
}
Jednkze zamiast wynikow wyrzucane sa jakies "smieci" z pamieci. Czy moglibyscie wskazac moj blad/bledy ?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
[c++] wczytywanie liczb z pliku do tablicy
« Odpowiedź #1 dnia: 2012-10-10, 13:23:39 »
1. Zdecyduj się, czy korzystasz ze strumieni czy uchwytów plików. W strumieniu ifstream getline jest metodą. A ty korzystasz z funkcji getline, czyli czegoś całkiem innego.

2. Jakie instrukcje obejmuje pierwszy while i właściwie po co jest jak olewasz wyniki?

3. Po co jest łańcuszek getline+atof+c_str? Jest takie coś jak >>

4. Popatrz jak się zmieniają indeksy w drugim while.  Czy tak jak powinny?

Taki hint - przy tak prostych programach weź ołówek, gumkę, kartkę w kratkę z listingiem kodu po lewej stronie i kratkami na aktualne zawartości zmiennych po prawej i wykonaj go "na piechotę" głośno czytając co robi dana linijka, które zmienne czyta, jakie obliczenia robi i jakie wyniki generuje. W ten sposób łatwo zrozumiesz co jest nie tak i jak to naprawić.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

kordi

  • Gość
[c++] wczytywanie liczb z pliku do tablicy
« Odpowiedź #2 dnia: 2012-10-10, 14:32:14 »
Dobra. Probuje od pocztku:
#include 
#include

using namespace std;
int main()
{
 int tablica[4][4];
 int row = 0;
 int col=0;
 
  ifstream liczby("wyniki.txt");

   if (!liczby)
     {
       cout << "Nie mozna otworzyc pliku";
       getchar();
      }

     while (!liczby.eof())
                         
      liczby >> tablica[row][col];
      row++;
      col++;
      liczby.close();

    for (int i=0; i      for (int j=0; j       cout <<"tab["<
   return 0;
    }
Kod jeszcze nie dziala tak jak powinien. Nie wiem, jak zrobic warunek, ze jesli dojdzie do konca linii, to mamy przejsc do nowego wiersza.

kordi

  • Gość
[c++] wczytywanie liczb z pliku do tablicy
« Odpowiedź #3 dnia: 2012-10-10, 21:10:37 »
Pytanie jest juz nieaktualne