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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
All
1397 / 401 / 39
Регистрация: 09.04.2009
Сообщений: 2,461
26.05.2009, 20:03     Cреднее арифметическое чисел в файле txt. #1
Проясните пожалуйста, что не так.
Нужно написать программу, которая вычисляет среднее арифметическое чисел, находящихся в файле 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, как его понимать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2009, 20:03     Cреднее арифметическое чисел в файле txt.
Посмотрите здесь:

C++ Поиск в txt файле
C++ В файле input.txt содержатся сведения о группе студентов. переписать данные файла в файл output.txt, отсортировав их по возрастанию
Посчитать сколько в файле input.txt символов и записать их кол-во в output.txt C++
C++ Cреднее арифметическое чисел, лежащих ниже главной диагонали
C++ Написать программу- вводная информация в файле in.txt, выходная информация в out.txt
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
 Аватар для Rififi
2330 / 1045 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
26.05.2009, 20:21     Cреднее арифметическое чисел в файле txt. #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();}
All
1397 / 401 / 39
Регистрация: 09.04.2009
Сообщений: 2,461
26.05.2009, 23:08  [ТС]     Cреднее арифметическое чисел в файле txt. #3
Спасибо за ответ.
Нажимаешь Run, по-прежнему выводит только эти строки Srednee arifmet chisel v faile. C:Wnumbers.txt, и дальше не идёт. Зависает, на Enter не реагирует. Что не так?
Содержимое файла стирается, но запись в файл не делается.
RetiF
 Аватар для RetiF
8 / 8 / 1
Регистрация: 21.12.2008
Сообщений: 36
27.05.2009, 02:38     Cреднее арифметическое чисел в файле txt. #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, содержащий исходные числа
All
1397 / 401 / 39
Регистрация: 09.04.2009
Сообщений: 2,461
27.05.2009, 11:10  [ТС]     Cреднее арифметическое чисел в файле txt. #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 не реагирует. Что не так?
С содержимым файла ничего не происходит, запись в файл не делается.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
27.05.2009, 12:16     Cреднее арифметическое чисел в файле txt. #6
All, в 20 строке убери точку с запятой после while.
All
1397 / 401 / 39
Регистрация: 09.04.2009
Сообщений: 2,461
27.05.2009, 18:48  [ТС]     Cреднее арифметическое чисел в файле txt. #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();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2010, 20:19     Cреднее арифметическое чисел в файле txt.
Еще ссылки по теме:

C++ Напишите программу, которая вычисляет среднее арифметическое чисел, находящихся в файле numbers.txt
C++ Считать 10 целых чисел с файла 1.txt и записать в файл 2.txt максимальный элемент и его индекс
В файле a.txt задано 5 целых чисел. Вывести их согласно предложенному формату C++

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

Или воспользуйтесь поиском по форуму:
MaxiStyle
Сообщений: n/a
20.06.2010, 20:19     Cреднее арифметическое чисел в файле txt. #8
Помогите плиз эта же прога ток сохранять в другой файл, а не в тот который мы открываем
Yandex
Объявления
20.06.2010, 20:19     Cреднее арифметическое чисел в файле txt.
Ответ Создать тему
Опции темы

Текущее время: 00:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru