

![]() |
![]() |
|
|||||||
![]() |
![]() |
| programowanie języki, projekty, pomoc, oprócz html, php, js |
|
|
|
LinkBack | Narzędzia wątku | Przeszukaj ten temat | Wygląd |
![]() |
![]() |
|
|||
|
Witam!
Bardzo proszę o pomoc w napisaniu programu w C++ na zaliczenie Program polega na tym, że w jakimś pliku tekstowym znajdują się wiersze z liczbami. Program musi wczytać te liczby z pliku i wypisać sumę liczb dla każdego wiersza osobno Bardzo proszę o pomoc jest to praca zaliczeniowa a zupełnie nie pamiętam jak się programuje w tym języku Dziękuje i pozdrawiam |
![]() |
![]() |
![]() |
![]() |
|
|||
|
To działa tak: Tworzę dwa obiekty do odczytu z tego samego pliku. Każdy z nich sczytuje niezależnie od drugiego, więc po odczytaniu linii drugi może w inny sposób odczytywać tę samą linię. Liczę ile jest liczb w pojedynczej linii, potem drugi obiekt sczytuje liczby tyle razy ile ich jest w danej linii. Za każdym razem sczytaną liczbę dodaję do wyzerowanej na początku sumy. Potem sumę wypisuję i biorę się za kolejną linię.
Dałem też sprawdzanie czy plik istnieje. Między liczbami może wystąpić dowolna ilość spacji lub znaków tabulacji, wiersze z samymi znakami odstępu, bez liczb, zostaną pominięte. Zmienna k liczy ile jest liczb w linii. Za liczbę uznałem każdy ciąg znaków bez przerwy w postaci spacji lub tabulacji. Zmienna state pokazuje czy aktualnie przechodzimy przez liczbę czy przez pustą przestrzeń przeglądając pojedynczą linię z pliku znak po znaku. Instrukcja if(k!=0) przed while(k>0) może trochę dziwić, ale jest ona warunkiem wypisania sumy, żeby program nie pisał, że suma liczb w pustym wierszu wynosi 0, bo wg. mnie jeśli nie ma liczb to nie ma ich sumy. Kod:
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
using namespace std;
int main(void)
{
ifstream pliczek, pomoc;
int suma, liczba, k, i, state;
string linia;
char sciezka[256];
cout<<"Podaj nazwe lub sciezke do pliku\n\nsciezka: ";
cin>>sciezka;
pliczek.open(sciezka);
pomoc.open(sciezka);
cout<<"\n\n";
if(pliczek.good()==0){
cout<<"Wystapil problem zwiazany z plikiem, program zostanie zamkniety\n";
getch();
return 0;
}
while(pliczek.eof() == 0){
getline(pomoc, linia);
for(i=0, state=0, k=0; linia[i]!='\0'; i++)
if(linia[i]!=' ' && linia[i]!='\t'){
if(state==0){
k++;
state=1;
}
}
else
state=0;
suma=0;
if(k!=0){
while(k>0){
pliczek>>liczba;
suma=suma+liczba;
k--;
}
cout<<suma<<endl;
}
}
pomoc.close();
pliczek.close();
getch();
return 0;
}
Ostatnio edytowane przez Raziehl ; 05.04.2008 o 15:27. |
![]() |
![]() |
![]() |
![]() |
|
|||
|
Jeśli założymy, że w pliku zawsze liczby są napisane w rządku jedna za drugą, oddzielone jedną spacją i tak w każdej linii i nie ma pustych linii i jeśli założymy, że plik tekstowy zawsze istnieje i liczby zawsze są zapisane w pliku liczby.txt w folderze z programem to wygląda to tak:
Kod:
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
using namespace std;
int main(void)
{
ifstream pliczek, pomoc;
int suma, liczba, k, i;
string linia;
pliczek.open("liczby.txt");
pomoc.open("liczby.txt");
cout<<"\n\n";
while(pliczek.eof() == 0){
getline(pomoc, linia);
for(i=0, k=0; linia[i]!='\0'; i++){
if(linia[i]==' ')k++;
}
suma=0;
while(k>=0){
pliczek>>liczba;
suma=suma+liczba;
k--;
}
cout<<suma<<endl;
}
pomoc.close();
pliczek.close();
getch();
return 0;
}
Zamiast korzystać z pobierania całej linii można by skorzystać z funkcji języka C, ale wtedy trzeba plik otwierać przez wskaźnik FILE* a wtedy to nie jest C++ tylko C, bo w C++ używa się raczej zdefiniowanych obiektów w bibliotece <fstream>. Za słabo znam C++ żeby to inaczej zrobić nie przechodząc na C. Ostatnio edytowane przez Raziehl ; 05.04.2008 o 20:00. |
![]() |
![]() |
|
| Narzędzia wątku | Przeszukaj ten temat |
| Wygląd | |
|
|
Podobne wątki
|
||||
| Temat | Autor wątku | Forum | Odpowiedzi | Ostatni post/autor |
| [C] Wczytywanie polecen i liczb | somek | programowanie | 1 | 16.01.2008 17:06 |
| [C++] Wczytywanie liczb do tablic | qwer0 | programowanie | 2 | 17.10.2007 09:35 |
| [C] Wczytywanie danych z pliku | motorider | programowanie | 2 | 25.05.2007 22:31 |
| [Pascal] Wczytywanie pliku | DR00iD88 | programowanie | 3 | 18.01.2007 11:50 |
| [C++] Wczytywanie liczb z klawiatury (dwa zadania) | kondzikk | programowanie | 1 | 28.11.2006 20:40 |
| Wszystkie czasy w strefie GMT +2. Teraz jest 22:47. |

