Ĺ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
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