Форум программистов, компьютерный форум CyberForum.ru

С++ CodeBlocks - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Что и почему дописать в int main() чтобы функция void вернула значение http://www.cyberforum.ru/cpp-beginners/thread994381.html
Что и почему дописать в int main() чтобы функция void вернула значение? #include <stdio.h> #include <math.h> #include <iostream.h> void prostoe(int n, int *m) { *m=1; if (n%2==0) (*m)=0; else
C++ Имитация действий пользователя Здравствуйте! У меня необычный вопрос! 1. Возможно с помощью С++ создать имитацию действий пользователя на каком-либо сайте!т.е. нажатие кнопки, ввод логина и пароля, совершать поиск по определенному критерию? т.е. хочу попробовать выполнить задачку, типа автоматическое добавление друзей в аккаунт соц. сети по критериям! 2.Это скорей всего относится к теме С++ сети? 3.В каком... http://www.cyberforum.ru/cpp-beginners/thread994377.html
Одномерный массив (максимальный из отрицательных элементов и поменять его местами с последним) C++
Пожалуйста подскажите как найти: максимальный из отрицательных элементов и поменять его местами с последним.
C++ Ошибка в коде
Помогите пожалуйста исправить ошибку, долго не могла понять, как это исправить Задание было таким: составить программу, которая для каждого значения аргумента X от начального X0 до коненого Xn, с шагом dx выполняет следующие действия: 1. вычисляет значения заданной функции Fx по стандартной программе 2. вычисляет приближенное значение заданной функции с помощью разложения в степенной ряд и...
C++ Написать функцию, которая для заданного x посчитает количество единичных битов в этом числе. http://www.cyberforum.ru/cpp-beginners/thread994333.html
Написать функцию, которая для заданного x посчитает количество единичных битов в этом числе. Проблема состоит в том, что все время программа выводит единицу, когда её там и не может быть( #include <iostream> #include <stdio.h> #include <conio.h> using namespace std; void print_bits (unsigned int n) {
C++ Задача про биты Написать функцию, которая возвращает число, полученное из числа X,в котором все розряды, расположенные правее центральной позиции, заменены на симметрические относительно центра разряды с левой части числа(крайний правый бит считать нулевым по номеру) #include <iostream> #include <stdio.h> #include <conio.h> using namespace std; void print_bits (unsigned int n) { int bit =... подробнее

Показать сообщение отдельно
Andreyuni
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 5
01.11.2013, 09:04     С++ CodeBlocks
Здравствуйте, уважаемые пользователи этого великолепного форума))

Задание:

Подсчитать, сколько раз каждое положительное число встречается в каждой строке файла number1.txt. Номер строки, все встречающиеся числа и их количество вывести в файл number3.txt и на консоль. В конец файла number2.txt добавить слова "Result = " и количество строк в тексте, вывести полученный результат на консоль.
Обратить все строки файла text1.txt и вывести их в файл text2.txt.

Никак не могу найти ошибку в коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#include <iostream>
#include <fstream> // нужен для работы с файлами
#include <string.h> // для работы со строками
#include <sstream> //строковый поток
#include <map> // отображение для подсчета повторяющихся слов
 
using namespace std;
void fillNumber(const char*, int); //для заполнения первого файла
void fillSecond(const char*, const char*);// заполнение второго файла по варианту
void fillThird(const char*, const char*);//заполнение третьего файла по варианту
void printFile(const char*); //печать файла
void fillText(const char*, const char*); //заполнение текстового файла
void fillTotal(const char*, int); // заполнение общего файла
int main ()
{
int n=100;
cout<<"Задайте количество чисел в файле: ";
cin>>n;
fillNumber("number1.txt",n);
cout<<"----------------Number1.txt--------------"<<endl;
printFile("number1.txt");
fillSecond("number1.txt","number2.txt");
cout<<"----------------Number2.txt--------------"<<endl;
printFile("number2.txt");
fillThird("number1.txt", "number3.txt");
cout<<"----------------Number3.txt--------------"<<endl;
printFile("number3.txt");
fillText("text1.txt","text2.txt");
cout<<"----------------Text2.txt--------------"<<endl;
printFile("text2.txt");
fillTotal("total.txt",80);
cout<<"----------------Total.txt--------------"<<endl;
printFile("total.txt");
return 0;
}
 
void fillNumber(const char* fname, int n)
/*
fname – имя заполняемого файла,
n – количество чисел в файле
Все файлы должны лежать в папке проекта С++ в каталоге debug
*/
{
// srand(time_t(0));// делаем генератор генератором «случайных» чисел
ofstream f(fname);//открываем файл для записи
while (n>0) //пока не закончились числа
{
int k = random()%11; //это количество чисел в строке
for (int j=1; (j<=k)&&(n>0);j++) //пока не закончились числа в строке
//либо все числа вообше
{
f << rand()%101 - rand()%101 << " "; //пишем число в файл
n--; //уменьшаем количество незаписанных чисел
}
f << endl; //конец строки
}
f.flush(); // сбрасываем буфер памяти в файл
f.close(); //закрываем файл
}
 
void printFile(const char* fname)
/*
Будем печатать файл, считывая информацию из него построчно
*/
{
int size=256; //размер считываемой строки
ifstream f(fname); //открываем файл для чтения
while (!f.eof()) //пока не кончился файл
{
char * s= new char[size]; //распределяем память под читаемую строку
f.getline(s, size); //читаем строку из файла
cout<<s<<endl; //печатаем на консоль
}
f.close();//закрываем файл
}
 
void fillSecond(const char* fINname, const char* fOUTname)
{
ifstream fIN(fINname); //файл для чтения
ofstream fOUT(fOUTname, ios::app); //файл для добавления в конец
int strNumber=0; // количество строк в исходном файле
while (!fIN.eof()) //пока не закончился файл
{
int size=256; //размер читаемой строки
char *s=new char[size];//распределяем память под строку
fIN.getline(s,size);//читаем строку
strNumber++; //наращиваем счетчик строк
}
fOUT<<"Result="<<strNumber<<endl; //записываем результат в файл
//далее делаем сброс буфера и закрываем оба файла
fIN.close();
fOUT.flush();
fOUT.close();
}
 
void fillThird(const char* fINname, const char* fOUTname )
{
ifstream fIN(fINname); //файл для чтения
ofstream fOUT(fOUTname); //файл для записи
int stringNumber=0; // номер строки
/*
Далее будем использовать отображения – это некое вместилище данных, которое может хранить связанные пары данных. Мы желаем в качестве такой пары хранить значение числа (прочитанное из строки файла) и количество его вхождений в читаемую строку. Для перебора элементов отображения нам понадобится специальный счетчик – итератор. Тогда с его помощью можно будет обращаться к элементам пары значений по именам first и second.
*/
map<int,int> numberInRow; //отображение целого числа на количество его вхождений
map<int,int>::iterator it; //итератор
while (!fIN.eof()) // пока не кончился файл
{
int size=256; //размер читаемой строки
char* s=new char[size];//распределяем память под читаемую строку
numberInRow.clear();//очищаем отображение
fIN.getline(s,size);//читаем строку из файла
/*
Далее, чтобы из прочитанной строки можно было выделить числа, преобразуем строку к входящему строковому потоку
*/
istringstream str(s);
stringNumber++; //увеличиваем счетчик строк
int nmb; //читаемое число
while (str>>nmb) //пока в строке есть числа, читаем их
{
if (nmb>0) numberInRow[nmb]++;
/*
и если число положительное, добавляем его в отображение в виде ключа (первого элемента пары – то, что стоит в квадратных скобках), а значение второго элемента пары наращиваем на единицу.
*/
}
/*
При помощи итератора перебираем все элементы отображения и записываем их в файл.
*/
fOU for (it=numberInRow.begin(); it!=numberInRow.end(); it++)
T<<"Строка №"<<stringNumber<<":"<<'\t';
fOUT<<it->first<< "->" <<it->second<<'\t';
fOUT<<endl;
}
fIN.close();
fOUT.close();
}
 
void fillText(const char* fINname, const char* fOUTname)
{
ifstream fIN(fINname); //файл для чтения
ofstream fOUT(fOUTname);// файл для записи
while (!fIN.eof()) //пока не конец файла
{
int size=256; //размер читаемой строки
char * s=new char[size];//распределяем память под читаемую строку
fIN.getline(s,size);//читаем строку
/*
Далее начиная, с настоящей длины строки (минус один, т.к. самый последний элемент строки - перевод каретки, а он нам не нужен) и до начала посимвольно перепечатываем ее в файл (реверсируем).
*
/
for (int i=strlen(s)-1;i>=0;i--)
fOUT<<s[i];
fOUT<<endl;
}
fIN.close);
(fOUT.close();
}
void fillTotal(const char*fname, int fieldWidth)
/*
Заполнение файла с выравниванием по правому краю и центру. fieldWidth – ширина страницы.
*/
{
ifstream number2("number2.txt");
ifstream text2("text2.txt");
ofstream total(fname);
int size=256;
while (!number2.eof())
{
char * s= new char[size];
number2.getline(s, size);
for (int i=0; i<=fieldWidth-strlen(s);i++)
total<<' '; //дополняем пробелы для выравнивания
total<<s<<endl;
}
number2.close();
while (!text2.eof())
{
char * s= new char[size];
text2.getline(s, size);
for (int i=0; i<=fieldWidth/2-strlen(s)/2;i++)
total<<' '; //дополняем пробелы для выравнивания
total<<s<<endl;
}
text2.close();
total.close();
}
}}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru