

![]() |
![]() |
|
|||||||
![]() |
![]() |
| programowanie języki, projekty, pomoc, oprócz html, php, js |
|
|
|
LinkBack | Narzędzia wątku | Przeszukaj ten temat | Wygląd |
![]() |
![]() |
|
|||
|
Witam,
To mój pierwszy post na forum, jestem świeżo zarejestrowany ;] Mam problem z c++ - nie ukrywam - dopiero zaczynam przygodę z tym językiem. Dostałem jednak program do napisania, który w/g mnie wymaga dużo więcej niż podstaw i nie mogę sobie z tym poradzić więc proszę Was o pomoc. Mam napisać progs dokonujący losowego podziału zbioru (podanego z zewnątrz plikiem) z liczbami na dwa i dalej coś tam jeszcze się dzieje ale chcę sam pokombinować. Mam problem z początkiem. No więc program pobiera zawartość zbioru, przykładowo: 1 5.3 3.7 1.5 0.2 1 5.0 3.3 1.4 0.2 2 7.0 3.2 4.7 1.4 2 6.4 3.2 4.5 1.5 2 6.9 3.1 4.9 1.5 2 5.5 2.3 4.0 1.3 2 6.5 2.8 4.6 1.5 2 5.7 2.8 4.5 1.3 2 6.3 3.3 4.7 1.6 2 4.9 2.4 3.3 1.0 .. itd, czyli jest po 5 liczb w każdym wierszu. Jak złapać te liczby w tablice? Tak, aby było dla powyższych tab[10][5], czyli [1] [5.3] [3.7] [1.5] [0.2] [1] [5.0] [3.3] [1.4] [0.2] [2] [7.0] [3.2] [4.7] [1.4] ..itd. Przeszukałem forum pod tym kątem, ale było tylko opisane ładowanie znaków a nie liczb, a w/g mnie-początkującego to nie to samo. Proszę Was o pomoc, bo nie wiem jak ładować te cholerne liczby do komórek tablic. Tymczasem będę równolegle kombinował sam, na razie z pomocą Symfonii Grębosza programik grzecznie pyta o plik, poczym go czyta ale znak za znakiem.. ![]() pozdrawiam |
![]() |
![]() |
![]() |
![]() |
|
|||
|
Kod:
float tablica[20][5]; // tablica liczb zmiennoprzecinkowych
int i = 0; // liczy kolumny
int j = 0; // liczy wiersze
while (cin >> liczba) // Dopóki jest co wpisać z pliku...
{
tab[j][i] = liczba; // Wstaw do tablicy w wierszu j, kolumnie i.
i++; // Przesuń się do sąsiedniej kolumny
if (i==5) // Jeśli doszedłeś do końca wiersza...
{
j++; // Przejdź do następnego wiersza
i=0; // Przejdź do pierwszej kolumny
}
}
|
![]() |
![]() |
![]() |
![]() |
|
|||
|
Ok, ale teraz pytanie do tej linijki -> while (cin >> liczba). Tutaj jest ładowanie danych do zmiennej ze standardowego wejścia. Wpisując z klawiatury to działa. Inaczej (chyba) sprawa się ma przy ładowaniu znaków z pliku. Stamtąd raz wpada spacja, raz liczba innym razem kropka (jeśli liczba z ułamkiem) a po kropce liczba stanowiąca ułamek dziesiętny. Z tym nie mogę sobie poradzić jak to odebrać aby wyłowić tylko liczby (jedne bez części ułamkowej odzielonej kropką a inne z ułamkiem) bez spacji i wpakować je do tych tablic.
No dobra, wygląda na to że udało mi się tego dokonać. Wrzucam poniżej kod (może być trochę lamerski, proszę się nie śmiać )Kod:
#include<iostream.h>
#include<fstream.h>
#include<ctype.h>
#include<stdlib.h> //pauza -robocze
main()
{
char plik[20];
cout<<"podaj nazwe pliku do otwarcia: ";
cin>>plik;
ifstream czytaj(plik);
if(!czytaj)
{
cout<<"nie moge otworzyc tego pliku..\n";
system("PAUSE"); //robocze -pauza
return 1; //robocze -pauza
}
float tab[150][5];
int i = 0; // liczy kolumny
int j = 0; // liczy wiersze
char znak;
float liczba;
float cale;
float ulamkowa;
bool ulamek =0, caleok=0, ulamekok=0;
while (czytaj.get(znak))
{
if(isspace(znak) && !caleok)
{
ulamek=0;
ulamkowa=0.0;
}
else
{
if(znak=='.'){ulamek=1; ulamekok=0;}
if(isspace(znak) && caleok) ulamekok=1;
if(isdigit(znak) && !ulamek)
{
cale =(float)((znak -'0'));
caleok=1;
}
if(isdigit(znak)&& ulamek)
{
ulamkowa =((float)(znak-'0')) *0.1;
ulamek=0;
ulamekok=1;
}
if(ulamekok && caleok)
{
liczba =cale +ulamkowa;
tab[j][i] = liczba; // Wstaw do tablicy w wierszu j, kolumnie i.
caleok=0;
ulamekok=0;
i++;
if (i==5)
{
j++;
i=0;
}
}
}
}
// ***** sprawdzenie
for(j=0; j<150; j++)
{
cout<<"dla wiersza j =" <<j<<endl;
for(i=0; i<5; i++)
{
cout<<" i ="<<tab[j][i]<<endl;
}
}
/************************** ŁADOWANIE *************************/
system("PAUSE"); //robocze -pauza
return(0); //robocze -pauza
}
pozdro. dumny z siebie qwer0 żółtodziób teraz działam dalejOstatnio edytowane przez qwer0 ; 17.10.2007 o 23:15. Powód: udało sie |
![]() |
![]() |
|
| Narzędzia wątku | Przeszukaj ten temat |
| Wygląd | |
|
|
Podobne wątki
|
||||
| Temat | Autor wątku | Forum | Odpowiedzi | Ostatni post/autor |
| [Pascal] Wczytywanie danych z pliku do tablic | smajler | programowanie | 1 | 28.05.2007 00:45 |
| [C/C++] Wczytywanie danych | dzien_i_noc | programowanie | 1 | 30.01.2007 14:34 |
| [Pascal] Wczytywanie pliku | DR00iD88 | programowanie | 3 | 18.01.2007 11:50 |
| [Algorytmy] Badanie czy dana liczbą jest liczbą pierwszą (schemat blokowy) | Ganguś | programowanie | 1 | 09.01.2007 13:27 |
| [C++] Wczytywanie liczb z klawiatury (dwa zadania) | kondzikk | programowanie | 1 | 28.11.2006 20:40 |
| Wszystkie czasy w strefie GMT +2. Teraz jest 21:55. |

