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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
All
1758 / 437 / 43
Регистрация: 09.04.2009
Сообщений: 2,599
#1

Cреднее арифметическое чисел в файле txt. - C++

26.05.2009, 20:03. Просмотров 1806. Ответов 7
Метки нет (Все метки)

Проясните пожалуйста, что не так.
Нужно написать программу, которая вычисляет среднее арифметическое чисел, находящихся в файле A:\numbers.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
/Srednee arifm
#include<string.h>
#include<stdio.h>
#include<conio.h>
#define FNAME "C:\Wnumbers.txt"//imaj faila
void main()
{
char fname[80]=FNAME;
FILE *out;//text.fail
float sum=0;//summa chisel
float sred;//srednee arifm.
int i=0;//kol-vo chisel
int g;//chislo
printf("\nSrednee arifmet");
printf("\nchisel v faile. %s",fname);
//otkr. fail  v reshime zapisi (w) texta (t)
if ((out = fopen(fname,"wt"))==NULL)
printf("\nOshibka pri otkrytii faila");
getch();
return;
while
 (!feof(out));
 fscanf(out,"%i",&i);
 sum+=g;
 fclose(out);//zakrit fail
 sred=sum/i;
 fprintf(out,"%i\n",sred);
printf("\nwsego chisel:%i",i);
printf("\nsumma:%i\n",sum);
printf("\nSred.arif:%i\n",sred);
getch();
}
Файл C:Wnumbers.txt я создал на диске С:\.
Нажимаешь Run, выводит эти строки Srednee arifmet chisel v faile. C:Wnumbers.txt,
и дальше не идёт. Что не так?
Компилятор ругается на эту строку “while (!feof(in));”, пишет Unreachable code, как его понимать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2009, 20:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Cреднее арифметическое чисел в файле txt. (C++):

Cреднее арифметическое чисел, лежащих ниже главной диагонали - C++
Задача должна находить среднее арифметическое чисел лежащих ниже главной диагонали #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Напишите программу, которая вычисляет среднее арифметическое чисел, находящихся в файле D:\numbers.txt - C++
Напишите программу, которая вычисляет среднее арифметическое чисел, находящихся в файле D:\numbers.txt.

Напишите программу, которая вычисляет среднее арифметическое чисел, находящихся в файле numbers.txt - C++
Ребят, есть условие и решение задачи, объясните пожалуйста комментариями ее решения, очень нужно. Заранее огромное спасибо! Задача ...

Cреднее арифметическое элементов массива - C++
4.Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет среднее арифметическое его элементов. ...

Сортировка чисел на четные и нечетные в файле txt - C++
программа должна взять числа из файла например input.txt и просортировать их на четность если число четное то записать его в 1.txt а...

Удалить в текстовом файле 1.txt все строки, которые встречаются в текстовом файле 2.txt - C++
например имеется текстовый файл 1.txt c таким содержанием 111 222 333 444 555 и имеется текстовый файл 2.txt c таким...

7
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
26.05.2009, 20:21 #2
детально не вникал, но, следуя здравому смыслу, попытался исправить куски бредятины.

C++
1
2
3
4
5
6
7
8
9
#include<string.h>
#include<stdio.h>
#include<conio.h>
#define FNAME "C:\\Wnumbers.txt"/*imaj faila*/
void main(){char fname[80]=FNAME;FILE *out;/*text.fail*/float sum=0;/*summa chisel */float sred;/*srednee arifm. */
int i=0;/*kol-vo chisel*/int g=0;/*chislo */printf("\nSrednee arifmet");printf("\nchisel v faile. %s",fname);
/*otkr. fail  v reshime zapisi (w) texta (t)*/if ((out = fopen(fname,"wt"))==NULL)printf("\nOshibka pri otkrytii faila");
getch();int n=1;while(!feof(out)){fscanf(out,"%i",&i);sum+=g;   n++;}fclose(out);/*zakrit fail*/sred=(float)sum/n;
fprintf(out,"%i\n",sred);printf("\nwsego chisel:%i",i);printf("\nsumma:%i\n",sum);printf("\nSred.arif:%i\n",sred);getch();}
1
All
1758 / 437 / 43
Регистрация: 09.04.2009
Сообщений: 2,599
26.05.2009, 23:08  [ТС] #3
Спасибо за ответ.
Нажимаешь Run, по-прежнему выводит только эти строки Srednee arifmet chisel v faile. C:Wnumbers.txt, и дальше не идёт. Зависает, на Enter не реагирует. Что не так?
Содержимое файла стирается, но запись в файл не делается.
0
RetiF
8 / 8 / 1
Регистрация: 21.12.2008
Сообщений: 36
27.05.2009, 02:38 #4
Вы производите запись в файл, после того, как закрыли его. Также, перепутаны счётчик чисел и их сумма. В общем, вот подредактированный вариант Вашей программы:

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
#include <stdio.h>
 
main()
{
FILE *out;
float sum=0, sred, i=0, g=0;
 
out = fopen("result.txt","a+"); // "a+" - режим чтения и записи, содержимое файла не стирается
 
while(!feof(out)) {
                   fscanf(out,"%f",&i);
                   sum=sum+i; g++;
                  }
  
 sred=sum/g;
 
 fprintf(out,"\n\n%f",sred);
 
 fclose(out);
 
 printf("Check your result.txt");
 
 getchar();
}
Естественно, уже должен существовать файл result.txt, содержащий исходные числа
1
All
1758 / 437 / 43
Регистрация: 09.04.2009
Сообщений: 2,599
27.05.2009, 11:10  [ТС] #5
Спасибо за ответ.
Если я вас правильно понял, то должно быть так:

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
//Srednee arifm
#include<string.h>
#include<stdio.h>
#include<conio.h>
#define FNAME "Wnumbers.txt"//imaj faila
void main()
{
char fname[80]=FNAME;
FILE *out;//text.fail
float sum=0;//summa chisel
float sred;//srednee arifm.
float i=0;//kol-vo chisel
float g=0;//chislo
printf("\nSrednee arifmet");
printf("\nchisel v faile. %s",fname);
//otkr. fail  v reshime zapisi i chtenija "a+"
out = fopen("Wnumbers.txt","a+");
printf("\nOshibka pri otkrytii faila");
getch();
while(!feof(out));
 {
 fscanf(out,"%f",&i);
 sum=sum+i;
 g++;
 }
 sred=sum/g;
 fprintf(out,"\n\n%f\n",sred);
fclose(out);//zakrit fail
printf("\nwsego chisel:%f",i);
printf("\nsumma:%f\n",sum);
printf("\nSred.arif:%f\n",sred);
getch();
}
Нажимаешь Run, доходит до Oshibka pri otkrytii faila, и дальше не идёт.
Зависает, на Enter не реагирует. Что не так?
С содержимым файла ничего не происходит, запись в файл не делается.
0
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
27.05.2009, 12:16 #6
All, в 20 строке убери точку с запятой после while.
1
All
1758 / 437 / 43
Регистрация: 09.04.2009
Сообщений: 2,599
27.05.2009, 18:48  [ТС] #7
Спасибо всем за помощь.
Вот работающий вариант, может кому пригодится.
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
//Среднее арифметическое чисел
//в файле A:\numbers.txt
#include<string.h>
#include<stdio.h>
#include<conio.h>
#define FNAME "A:\numbers.txt"//имя файла
void main()
{
char fname[80]=FNAME;
FILE *out;//text.fail
float sum=0;//сумма чисел
float sred;//среднее арифмет.
float i=0;//число
int g=0;//кол-во чисел
printf("\nСреднее арифметическое");
printf("\nчисел в файле. %s",fname);
//открываем файл для записи и чтения "a+"
out = fopen("A:\numbers.txt","a+");
printf("\nОшибка при открытии файла");
getch();
while(!feof(out))
 {
 fscanf(out,"%f",&i);
 sum=sum+i;
 g++;
 }
 sred=sum/g;
 fprintf(out,"\n\n%f\n",sred);
fclose(out);//закрываем файл
printf("\nВсего чисел:%i",g);
printf("\nСумма:%f\n",sum);
printf("\nСреднее арифметическое:%f\n",sred);
getch();
}
0
MaxiStyle
Сообщений: n/a
20.06.2010, 20:19 #8
Помогите плиз эта же прога ток сохранять в другой файл, а не в тот который мы открываем
20.06.2010, 20:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2010, 20:19
Привет! Вот еще темы с ответами:

Вычислить среднее арифметическое чисел в файле - C++
Написать программу, считывающую числа из файла и вычисляющую их среднее арифметическое.

Вычислить среднее арифметическое чисел, находящихся в файле. - C++
Напишите программу, которая вычисляет среднее арифметическое чисел, находящихся в файле number.txt. файл создан в нем написано:...

В файле a.txt задано 5 целых чисел. Вывести их согласно предложенному формату - C++
В файле a.txt задано 5 целых чисел. Выведите их на печать по одному числу в строке, так чтобы у первого числа отступ от левого края 4...

Работа с файлами. Найти среднее арифметическое всех чисел и записать его в файл output.txt - C++
Помогите написать, пожалуйста 2 программы на C++. В файле input.txt записаны числа, сколько их – неизвестно. «3»: Найти среднее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru