Имаме текстов файл chisla.txt, съдържащ цели числа. Да се напише програма, която прави два други файла – chetni.txt и nechetni.txt, съдържащи съответно четните и нечетните числа от първия файл. Накрая да се отпечата и колко четни и колко нечетни числа е имало.
По желание:
- да се направят и два други файла – ednocifreni.txt и otricatelni.txt, съдържащи съответно едноцифрените и отрицателните числа от първия файл
- да се създават файловете само ако има нужда да се записва нещо в тях


#include <cstdlib> #include <iostream> #include <fstream> using namespace std; int main(int argc, char** argv) { int x; //otvarame 2 faila fstream chisla, chetni, nechetni; chetni.open("chetni.txt", ios::out); chisla.open("chisla.txt",ios::in); nechetni.open("nechetni.txt", ios::out); //cheteme ot chisla.txt while (chisla>>x){ //chenti i nechetni if (x%2==0) chetni<<x<<endl; else nechetni<<x<<endl; //zapisvame v chetni ili nechetni } //zatvarame 2ta faila nechetni.close(); chetni.close(); chisla.close(); return 0; }#include <cstdlib> #include <iostream> #include <fstream> using namespace std; int main(int argc, char** argv) { ifstream Chisla; ofstream Chetni,Nechetni; int x; Chisla.open("chisla.txt",ios::in); while (Chisla>>x) { if(x%2==0) { if(Chetni.is_open()) Chetni<<x<<endl; else { Chetni.open("chetni.txt",ios::out); Chetni<<x<<endl; } } else { if(Nechetni.is_open()) Nechetni<<x<<endl; else { Nechetni.open("nechetni.txt",ios::out); Nechetni<<x<<endl; } } } Chisla.close(); Nechetni.close(); Chetni.close(); return 0; }Марти, вярно е, но може да се оптимизира малко.
#include <iostream> #include <fstream> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int main(int argc, char** argv) { int x; fstream chisla,chetni,nechetni,ednocifreni,otricatelni; chisla.open("chisla.txt",ios::in); chetni.open("chetni.txt",ios::out); nechetni.open("nechetni.txt",ios::out); ednocifreni.open("ednocifreni.txt",ios::out); otricatelni.open("otricatelni.txt",ios::out); while(chisla>>x) { if(x%2==0) chetni<<x<<endl; else nechetni<<x<<endl; if((x>0)&&(x<10)) ednocifreni<<x<<endl; if(x<0) otricatelni<<x<<endl; } chisla.close(); chetni.close(); nechetni.close(); ednocifreni.close(); otricatelni.close(); return 0; }Браво, Алекс, много добре!
#include <cstdlib> #include <iostream> #include <fstream> using namespace std; int main(int argc, char** argv) { fstream Chisla,Chetni,Nechetni; int ch; Chisla.open("chisla.txt",ios::in); Chetni.open("chetni.txt",ios::out); Nechetni.open("nechetni.txt",ios::out); while (Chisla>>ch) if (ch%2==0) Chetni<<ch<<endl; if (ch%2!=0) Nechetni<<ch<<endl; Chisla.close(); Chetni.close(); Nechetni.close(); return 0; }Записва ти само четните, нали? Помисли защо. Опитай да сложиш на ред 18 команда за отпечатване на числото на екрана и виж колко пъти ще се изпълни и за кое число…