ďťż

Ładny brzuch

Siema mam nastepujacy problem mam macierz w pliku txt ktory sie nazwywa macierz ;) i liczby w nim wygladaja nastepujaco:
3 4 5 2 3 4 1 2 3

no i napisalem program ktory powinien pobierac z pliku te liczby i zapisac do tablicy kwadratowej double aby puzniej dodac tak jeszcze jeden plik i zrbobic ich mnozenie ale mniejsza , chodzi o to ze liczby program pobiera i zapisuje w tej tablicy ale nie sa to te liczby ktore sa w pliku txt i nie wiem dlaczego prosze o help ponizej ten kod

#include <iostream> #include <fstream> #include <cstdlib> using namespace std; int main() { ifstream wejscie; wejscie.open("macierz"); char str[256]; while (wejscie.getline(str,256))    cout << str << endl; atoi(str); double **tab; tab = new double * [3]; for(int i=0;i<3;++i) tab[i] = new double [3]; cout<<endl<<"Wpisuje przeksztalcony ciag znakow do macierzy :\n"; int k=0; for(int i=0;i<3;++i) {  for(int j=0;j<3;++j,++k)  {      tab[i][j] = str[k]; } } cout<<"Wypisanie wartosci macierzy :\n"; for(int i=0;i<3;++i) {  for(int j=0;j<3;++j)  {      cout<<i<<","<<j<<"="<<tab[i][ j]<<endl; } //cout<<endl; } return 0; }

z gory dziekuje ;) i pozdrawiam.



A czy nie możesz w taki sposób ładować danych?

ifstream wejscie("macierz.txt"); double tab[3][3];   //tutaj statycznie, jak chcesz to zmień for(int i=0;i<3;++i)  for(int j=0;j<3;++j)    wejscie >> tab[i][j];

jeśli chodzi o funkcję atoi(), to służy ona tylko do liczb całkowitych i inaczej się ją obsługuje:
int x = atoi(str);
Użytkownik bartolomeo4 edytował ten post 20 czerwiec 2006, 13:57
wg mnie to Ty tam w ogole nie uwzgledniasz wystepowania spacji. Pobierasz linijke tesktu (w dziwny sposob bo chyba nadpisujesz te linijki), czyli str = "1 2 3" gdzie masz spacje. Potem wywolujesz atoi tylko jaki to ma sens skoro nigdzie nie zapisujesz zwracanego wyniku? Pozatym jak do atoi wstawisz "1 2 3" to nie sadze abys otrzymal sesowny wynik.

nie czaje ;/ ja chce z pliku macierz.txt wyciagnac liczby a nie zapisac z programu do pliku :(



wypadałoby jeszcze zwolnic pamięc zajmowaną przez tablicę ;)
  for(int i=0; i<3; i++)        delete [] tab[i];   delete [] tab;

kurde i tak nie kumam moze mi ktos przeprawic ten kod zeby dzialal :/?:P
czyli funkcka atoi powinna tu byc stosowana czy jak ?;/ jak mam zaznaczyc zeby omijalao spacje ?;/

atoi - funkcja służąca do zamiany ciągu (char*) na liczbę (int)
a pog grzyba masz ją stosowac jezeli wczytuje ci kolejno liczby (int)?
spacje słuzą do oddzielnania wartosci w ciągu wejsciowym, o nie się nie martw tylko zrób jak ci bartolomeo4 powiedział :)
Użytkownik __avas__ edytował ten post 20 czerwiec 2006, 15:31
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •