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

Почему в приведенном коде всегда первым отрицательным элементом является нулевой элемент - C++

Восстановить пароль Регистрация
 
Zlou
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 6
17.10.2012, 11:14     Почему в приведенном коде всегда первым отрицательным элементом является нулевой элемент #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
39
40
#include "stdafx.h"
#include <stdio.h>
#include <clocale>
#include <conio.h>
#include <iostream>
using namespace std;
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "Russian");
    const int n=10;
    double a[n];
    double per=0;
    double vt;
    double sum=0;
    for ( int  i= 0; i < n; i++ )
{
    cout << endl << "Введите "<< i << " элемент массива" << endl;
    cin>>a[i];
}
    
 
  for  (int  i= 0; i < n; i++ ) {
        cout<<endl<< i << " элемент массива= " <<a[i]<<endl;
  }
    for  (int  i=0; i < n; i++ ) {
        if (a[i]<0 && per!=0) per=i;}
    for  (int  i=per; i < n; i++ ) {
        if (a[i]<0) vt=i;}
    for  (int  i=per+1; i < vt; i++ ) {
        sum=sum+a[i];
    }
 cout<<endl<<"Первый отрицательный элемент= "<<per<<endl;
 cout<<endl<<"Второй отрицательный элемент= "<<vt<<endl;
 cout<<endl<<"Сумма между отрицательными элементами= "<<sum<<endl;
_getch();
    //return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2012, 11:14     Почему в приведенном коде всегда первым отрицательным элементом является нулевой элемент
Посмотрите здесь:

C++ почему то первый в этом коде у меня не нулевой элемент а идет по порядку все
Сумма элементов между первым положительным элементом массива и последним отрицательным C++
C++ Однонаправленный связанный список (Вставить новый узел с нулевым значением перед первым отрицательным элементом...)
C++ Получить b1,…,bn, где bi – это сумма элементов, расположенных за первым отрицательным элементом в i-й строки
C++ Получить разницу между первым элементом последовательности и числом, стоящим перед первым отрицательным
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
17.10.2012, 11:21     Почему в приведенном коде всегда первым отрицательным элементом является нулевой элемент #2
А что это вообще такое и как она должна работать?
Zlou
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 6
17.10.2012, 11:26  [ТС]     Почему в приведенном коде всегда первым отрицательным элементом является нулевой элемент #3
Она должна находить сумму элементов массива находящихся между первым и вторым отрицательными элементами массива.
Я думал по программе более менее понятно в чём суть...
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
17.10.2012, 11:30     Почему в приведенном коде всегда первым отрицательным элементом является нулевой элемент #4
Сделай индексы на первый и второй отрицательный элемент типом int. Когда найдешь первый отрицательный элемент прерывай цикл break;-ом. Со вторым так же.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
17.10.2012, 11:32     Почему в приведенном коде всегда первым отрицательным элементом является нулевой элемент #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int i= 0; i < n; i++ ) {
cout<<endl<< i << " элемент массива= " <<a[i]<<endl;
}
for (int i=0; i < n; i++ ) {
    if (a[i]<0) {per=i;break;}
}
for (int i=per+1; i < n; i++ ) {
    if (a[i]<0) {vt=i;break;}
}
for (int i=per+1; i < vt; i++ ) {
sum=sum+a[i];
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.10.2012, 11:36     Почему в приведенном коде всегда первым отрицательным элементом является нулевой элемент #6
Цитата Сообщение от Zlou Посмотреть сообщение
for (int i=0; i < n; i++ ) {
if (a[i]<0 && per!=0) per=i;}
Вот здесь, как я понимаю, должен запоминаться индекс первого элемента меньше 0. Но запоминаться будет только если per != 0, а он равен 0 (в 15 строке). Потом, почему-то, в 35 строке выводится per (естественно будет 0). Должен выводится, по логике, a[per].
Yandex
Объявления
17.10.2012, 11:36     Почему в приведенном коде всегда первым отрицательным элементом является нулевой элемент
Ответ Создать тему
Опции темы

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