Dzień dobry, proszę niech ktoś pomoże :(


Napisać program (w C++), który:


1. Zapisze do pliku tekstowego (f1.txt) liczby naturalne od 0 do 20 włącznie.


2. Odczyta z pliku (f1.txt) wszystkie liczby (jako liczby) i wyświetl je na konsoli (nie zakładajcie ile będzie liczb).


3. Odczyta z pliku (f1.txt) wszystkie liczby i zapisze do drugiego pliku tekstowego (f2.txt) te które są niepodzielne przez 7.


4. Odczyta z drugiego pliku (f2.txt) wszystkie liczby i wyświetli na konsoli te które są niepodzielne przez 3, a także obliczy i wyświetli ich sumę i średnią.



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.

Rekah4

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