Odpowiedź :
Odpowiedź:
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main(int argc, char** argv) {
string linia;
int liczba, licznik = 0;
float srednia, suma;
fstream f;
fstream f2;
//zadanie 1
f.open("f1.txt", ios::out | ios::app);
for(int i = 0; i<=20 ; i++) {
f<<i<<endl;
}
f.close();
//zadanie 2
f.open("f1.txt", ios::in);
if(!f.good()) {
cout<<"Blad otwierania pliku f1.txt";
}
cout<<"Wszystkie liczby z pliku f1.txt: ";
while(getline(f, linia)) {
liczba = atoi(linia.c_str());
cout<<liczba<<" ";
if(liczba%7!=0) { //zadanie 3
f2.open("f2.txt", ios::out | ios::app);
if(!f2.good()) {
cout<<"Blad otwierania pliku f2.txt";
}
f2<<liczba<<endl;
f2.close();
}
}
cout<<endl;
f.close();
//zadanie 4
f2.open("f2.txt", ios::in);
cout<<"Liczby niepodzielne przez 3: ";
while(getline(f2, linia)) {
liczba = atoi(linia.c_str());
if(liczba%3!=0) {
cout<<liczba<<" ";
licznik++;
suma += liczba;
}
}
srednia = suma/licznik;
cout<<endl<<"Suma wynosi "<<suma<<" ,a srednia "<<srednia;
return 0;
}
Wyjaśnienie:
Pamiętaj o tym, że po każdym uruchomieniu programu trzeba usuwać utworzone przez program pliki f1.txt i f2.txt, ponieważ przy kolejnym uruchomieniu dane będą się dopisywać do wcześniej utworzonych plików.
Odpowiedź:
#include <fstream>
#include <iostream>
using namespace std;
int main() {
// 1
ofstream fo;
ifstream fi;
fo.open("f1.txt");
if (fo.is_open()) {
for (int i = 0; i <= 20; i++) {
fo << i << " ";
}
fo.close();
} else {
cout << "Nie można otworzyć pliku" << endl;
return 0;
}
// 2
fi.open("f1.txt");
if (fi.is_open()) {
int num;
while (fi >> num) {
cout << num << " ";
}
fi.close();
cout << endl;
} else {
cout << "Nie można otworzyć pliku" << endl;
return 0;
}
// 3
fi.open("f1.txt");
fo.open("f2.txt");
if (fi.is_open() && fo.is_open()) {
int num;
while (fi >> num) {
if (num % 7 != 0) {
fo << num << " ";
}
}
cout << endl;
fo.close();
fi.close();
} else {
cout << "Nie można otworzyć pliku" << endl;
return 0;
}
// 4
fi.open("f2.txt");
if (fi.is_open()) {
int num, suma = 0, n = 0;
while (fi >> num) {
if (num % 3 != 0) {
cout << num << " ";
suma += num;
n++;
}
}
fi.close();
cout << endl;
cout << "Suma = " << suma << endl;
cout << "Średnia = " << (float)(suma) / num << endl;
} else {
cout << "Nie można otworzyć pliku" << endl;
return 0;
}
return 0;
}
Przykładowy wynik działania:
//odczyt danych z plik f1.txt
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
//odczyt danych z f2.txt ( NIE podzielne przez 3)
1 2 4 5 8 10 11 13 16 17 19 20
//suma
Suma = 126
//średnia
Średnia = 6.3