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

Помогите найти ошибку в коде(цикл for проходит не по всем элементам массива) - C++

Восстановить пароль Регистрация
 
Ce7eH_111
 Аватар для Ce7eH_111
33 / 33 / 2
Регистрация: 17.11.2012
Сообщений: 109
Записей в блоге: 2
16.12.2012, 21:18     Помогите найти ошибку в коде(цикл for проходит не по всем элементам массива) #1
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
35
36
37
38
#include "stdafx.h"
#include "iostream"
#include <clocale>
#include <stdio.h>
#include <math.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int i = 1, f = 0, a, max = -100000, s[3] = {0,0,0};
 
    while (f < 3)
    {
        a = 0;
        cin>>a;
        if (a>0 || a<0) 
        {
            s[i] = s[i]+a;
        }
        else 
        {
            f=f+1;
            i=i+1;
        }
    }
    i = 1;
    for (i = 1;i <= 3;i = i+1)
    {
        if (s[i]>max) max = s[i];
    }
    printf("%d\n",max);
 
    system("Pause");
 
 
    return 0;
}
3 елемент масива в последнем форе не принимает участвия(((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 21:18     Помогите найти ошибку в коде(цикл for проходит не по всем элементам массива)
Посмотрите здесь:

Помогите найти ошибку в коде C++
C++ Помогите найти и исправить ошибку в коде
C++ Помогите найти ошибку в коде
C++ Помогите найти ошибку в коде
Помогите найти ошибку в коде C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
16.12.2012, 21:21     Помогите найти ошибку в коде(цикл for проходит не по всем элементам массива) #2
потому что нумерация массивов начинается с нуля. s[0], s[1], s[2]. А тут начинается сразу со второго элемента и уходит за границу массива. i должно быть равно нулю.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
16.12.2012, 21:22     Помогите найти ошибку в коде(цикл for проходит не по всем элементам массива) #3
Цитата Сообщение от Ce7eH_111 Посмотреть сообщение
for (i = 1;i <= 3;i = i+1)
* * {
* * * * if (s[i]>max) max = s[i];
Здесь выход за границу массива. (часто эти ошибки вижу)
C++
1
2
3
4
    for (i = 0;i < 3; i = i+1)
    {
        if (s[i]>max) max = s[i];
    }
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 21:23     Помогите найти ошибку в коде(цикл for проходит не по всем элементам массива) #4

Не по теме:

Магические числа...мммм,как же я их люблю


Цитата Сообщение от Ce7eH_111 Посмотреть сообщение
C++
1
2
3
4
for (i = 1;i <= 3;i = i+1) 
{
 if (s[i]>max) max = s[i];
}
здесь выход за пределы массива.
Ce7eH_111
 Аватар для Ce7eH_111
33 / 33 / 2
Регистрация: 17.11.2012
Сообщений: 109
Записей в блоге: 2
16.12.2012, 21:26  [ТС]     Помогите найти ошибку в коде(цикл for проходит не по всем элементам массива) #5
Нет не помогло

Добавлено через 1 минуту
Суть задачи в том чтобы после 3 нуля прекратить считать суму
и вывести наибольшую суму
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
16.12.2012, 21:29     Помогите найти ошибку в коде(цикл for проходит не по всем элементам массива) #6
C++
1
2
3
4
5
6
7
    int i = 1,
 
    while (f < 3)
    {
 
            s[i] = s[i]+a;
        }
То же самое. i должно быть равно нулю.
Yandex
Объявления
16.12.2012, 21:29     Помогите найти ошибку в коде(цикл for проходит не по всем элементам массива)
Ответ Создать тему
Опции темы

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