Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.04.2009, 02:23   #1
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
Вопрос Не правильно считает сумму чисел, которые находятся в файле.

На диске есть текстовый файл, в котором записаны числа от 1 до 10.
Числа в нём записаны в таком виде:
Код:
1
2
3
4
5
6
7
8
9
10
Проблема заключается в том, что отображение содержимого файла number.txt и подсчёт суммы в нём чисел, почему то начинается со второго числа.
То есть отображение содержимого файла в программе выглядит так:
Код:
2
3
4
5
6
7
8
9
10
И в итоге он некорректно подсчитывает сумма чисел, которые находятся в файле. То есть в ответе получается 54, а должно получиться 55.
Вот сама программа:
Код:
#include <iostream>
#include <stdio.h>

int main()
{
	FILE *numberTxt;
	char ch;
	int sum;
	int num;
	if((numberTxt=fopen("C:\\number.txt","r"))==NULL)
	{
		printf("Vovas time of opening of a file there was an error.\n");
		return 0;
	}
	printf("Contents of file C:\\number.txt:\n");
	sum=0;
	while((ch=getc(numberTxt))!=EOF)
	{
		fscanf(numberTxt,"%i",&num);
		printf("%i\n",num);
		sum+=num;
	}
	fclose(numberTxt);
	printf("The sum: %i\n",sum);
	system("pause");
	return 0;
}
Подскажите, пожалуйста, где я сделал ошибку.
TheWanderer вне форума
Старый 17.04.2009, 03:10   #2
DeFace
Пользователь
 
Аватар для DeFace
 
Регистрация: 27.09.2008
Сообщений: 60
По умолчанию

опусти просто в number.txt всё на одну строчку вниз и сё
DeFace вне форума
Старый 17.04.2009, 14:09   #3
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию

Цитата:
Сообщение от DeFace Посмотреть сообщение
опусти просто в number.txt всё на одну строчку вниз и сё
а можно ли как-нибудь решить данную проблему без опускания строки?
TheWanderer вне форума
Старый 17.04.2009, 14:13   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

while((ch=getc(numberTxt))!=EOF)
В этой строчке случаем не происходит чтение по крайней мере первого символа файла, который потом нигде не учитывается?
pu4koff вне форума
Старый 17.04.2009, 17:15   #5
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
while((ch=getc(numberTxt))!=EOF)
В этой строчке случаем не происходит чтение по крайней мере первого символа файла, который потом нигде не учитывается?
А как изменить данную строчку таким образом, что бы происходило чтение первого символа из файла?
TheWanderer вне форума
Старый 17.04.2009, 17:44   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А зачем читать первый символ файла отдельно?
Код:
...
while(!feof(numberTxt))
{
  fscanf(numberTxt,"%i",&num);
  printf("%i\n",num);
  sum+=num;
}
...
pu4koff вне форума
Старый 17.04.2009, 18:43   #7
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
А зачем читать первый символ файла отдельно?
Код:
...
while(!feof(numberTxt))
{
  fscanf(numberTxt,"%i",&num);
  printf("%i\n",num);
  sum+=num;
}
...
Спасибо за помощь.
TheWanderer вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цикл for to do, или как отобразить сумму всех чётных трёхзначных чисел которые делятся на 7 (Delphi 6) Lorden Помощь студентам 9 23.12.2008 18:50
Найти сумму всех чисел из промежутка от А до В, кратных 8 и 16 nickky2 Паскаль, Turbo Pascal, PascalABC.NET 8 05.12.2008 13:27
EXCEl не правильно считает формулу beliy-dis Microsoft Office Excel 5 30.07.2008 14:18
Найти сумму положительных нечетных чисел меньше 50 мандаринка Паскаль, Turbo Pascal, PascalABC.NET 8 22.12.2007 21:45
Как правильно сохранить настройки текста в ini файле KORN Общие вопросы Delphi 2 30.10.2007 09:14