powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Очень простой вопрос!
4 сообщений из 4, страница 1 из 1
Очень простой вопрос!
    #32852243
V.S.A_S.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всех приветствую!
Можете сказать где ошибка?
По идее все очень просто, но я новичок и было бы классно еслиб мне помогли.
//napishite programmu kotoraya vichislyaet
//srednee arifmmeticheskoe chisel nahodyashihsya
//v A:\numbers.txt

#include <iostream.h>
#include <conio.h>
#include <fstream.h>


void main()
{int n=0,i,Rezultat=0;
int a[3];
ifstream fin("A:\\numbers.txt");
if(!fin)cout<<"OSHIBKA BABY";

while(fin)
{fin>>i;
Rezultat=Rezultat+i;
n=n+1;}


Rezultat=Rezultat/n;

getch();

}
...
Рейтинг: 0 / 0
Очень простой вопрос!
    #32852274
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.S.A_S.Всех приветствую!
Можете сказать где ошибка?

Да, ошибки есть и их несколько:
1. Непонятно, зачем объявлен массив а[3], если он в дальнейшем не используется...
2. Нет вывода итоговых результатов (Rezult) на экран...
3. Файловый поток открывается, но не закрывается. Это есть не очень хорошо. Обычно, если что-то явно открывают, то затем это явно закрывают (а то потом появляется "утечка памяти", "мусор" в памяти и др. нехорошие вещи...)
4. Проверим, что будет, если файлового потока не существует. Тогда цикл while пропускается и попадаем на команду:
Rezultat=Rezultat/n;
При этом n=0 и можно получить ошибку - деление на 0.
Очевидно, надо включить эту "ветку" в if. То есть будем иметь:
if(!fin)
cout<<"OSHIBKA BABY";
else
{
while(fin)
{fin>>i;
Rezultat=Rezultat+i;
n=n+1;}

Rezultat=Rezultat/n;
}
И одно замечание по синтаксису:
Обычно на С/С++ пишут не "а=а+n", а "а+=n". Как утверждается в умных книгах такой вариант команды порождает более оптимальный код...
...
Рейтинг: 0 / 0
Очень простой вопрос!
    #32852678
V.S.A_S.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо что ответил Станислав!
Но у меня по прежнему не работает и в таком варианте

//napishite programmu kotoraya vichislyaet
//srednee arifmmeticheskoe chisel nahodyashihsya
//v A:\numbers.txt

#include <iostream.h>
#include <conio.h>
#include <fstream.h>


void main()
{int n=0,i,Rezultat=0;
int a[3];
ifstream fin("A:\\numbers.txt");
if(!fin)
cout<<"OSHIBKA";
else
{
while(fin)
{fin>>i;
Rezultat=Rezultat+i;
n=n+1;}

Rezultat=Rezultat/n;
}

cout<<Rezultat;
getch();

}
...
Рейтинг: 0 / 0
Очень простой вопрос!
    #32858322
Dubrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть небольшая ошибка в логике чтения данных из файла.
Если в цикле while(fin){...} при попытке чтения значения из файла не будет считано не одной цифры (например файл заканчивается переводом строки, т.е. в последний раз будет считано '\n',EOF), то значение переменной i не изменится, а значения Rezultat и n будут соответственно увеличены. Чтобы этого не случилось состояние потока нужно проверять не до, а после операции чтения.
---
С уважением, Dubrov.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Очень простой вопрос!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]