|
|
|
Очень простой вопрос!
|
|||
|---|---|---|---|
|
#18+
Всех приветствую! Можете сказать где ошибка? По идее все очень просто, но я новичок и было бы классно еслиб мне помогли. //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(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2004, 01:37 |
|
||
|
Очень простой вопрос!
|
|||
|---|---|---|---|
|
#18+
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". Как утверждается в умных книгах такой вариант команды порождает более оптимальный код... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2004, 07:04 |
|
||
|
Очень простой вопрос!
|
|||
|---|---|---|---|
|
#18+
Спасибо что ответил Станислав! Но у меня по прежнему не работает и в таком варианте //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(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2004, 20:04 |
|
||
|
Очень простой вопрос!
|
|||
|---|---|---|---|
|
#18+
Есть небольшая ошибка в логике чтения данных из файла. Если в цикле while(fin){...} при попытке чтения значения из файла не будет считано не одной цифры (например файл заканчивается переводом строки, т.е. в последний раз будет считано '\n',EOF), то значение переменной i не изменится, а значения Rezultat и n будут соответственно увеличены. Чтобы этого не случилось состояние потока нужно проверять не до, а после операции чтения. --- С уважением, Dubrov. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 08:54 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32852243&tid=2033876]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 371ms |

| 0 / 0 |
