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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lena13
2 / 2 / 0
Регистрация: 04.11.2012
Сообщений: 40
#1

не получается доработать одномерный массив - C++

11.11.2012, 14:08. Просмотров 249. Ответов 8
Метки нет (Все метки)

дан массив из 20-ти элементов,найти удвоенную сумму положительных элементов;вывести индексы тех элементов,которые больше значения предыдущего(начиная со второго);определить есть ли две пары соседних элементов с одинаковыми знаками.




#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <conio.h>
void main ()
{
int a[20],index=0,i,sum=0,w=0;


for (i=0;i<20;i++)
{
printf("vvedi massiv:");
scanf("%2d",&a[i]);
}


system("cls");

printf ("isxodni massiv:\n");
for (i=0;i<20;i++)
{
printf ("%3d",a[i]);
if(a[i]>0)
{
sum+=a[i];
sum=sum*2;
}
}


printf ("\nydvoennay summa pologitelnix elementov:%d",sum);

for (i=1;i<20;i++)
{
if(a[i]>a[i+1])
{
index=i;
printf ("\nindex elementov > predidyshego:%d",index);
}
}

for (i=1;i<20;i++)
{
if((a[i]>0 && a[i+1]>0) || (a[i]<0 && a[i+1]<0))
{
w+=1;
}

}

if (w>0)
printf ("\nda est'");
else
printf ("\nnet");
getch();


}


индексы выводит через раз правильные,и я нахожу одну пару,а мне нужно две.
помоги пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2012, 14:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не получается доработать одномерный массив (C++):

Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов) - C++
Помогите решить задачку: Дана матрица 5х7, элементами которой являются значения символьного типа. Составить одномерный массив, содержащий...

не могу закончить программу. основу (как я считаю) я написала. доработать не получается - C++
уменьшить элементы столбца на величину их индекса. вывести на экран сумму нечетных элементов в столбце. промежуточная функция: выполнить...

двухмерный массив доработать и исправить - C++
Задание:Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести систему к...

Массив. Помогите доработать код, подскажите где ошибки. - C++
Сама задача проста: Есть массив, состоящий из натуральных чисел, поделенный на 4 части, необходимо переставить блоки ( верхний правый с...

Двумерный массив, поиск локального минимума - доработать код - C++
Написал следующий код, вроде запускается и работает только не всегда корректно считает. Задача в следующем найти локальные минимумы ( если...

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька - C++
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
11.11.2012, 14:26 #2
Цитата Сообщение от lena13 Посмотреть сообщение
if(a[i]>0)
{
sum+=a[i];
sum=sum*2;
}
неверно. Ты в цикле n раз умножаешь сумму на 2.
верно так
C++
1
2
3
4
5
6
for (i=0;i<20;i++)
{
printf ("%3d",a[i]);
if(a[i]>0) sum+=a[i];
}
sum=sum*2;
или так
C++
1
2
3
4
5
for (i=0;i<20;i++)
{
printf ("%3d",a[i]);
if(a[i]>0) sum+=2*a[i];
}
lena13
2 / 2 / 0
Регистрация: 04.11.2012
Сообщений: 40
11.11.2012, 14:27  [ТС] #3
спасибо) а есть идеи,что с индексами делать?
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
11.11.2012, 14:29 #4
Цитата Сообщение от lena13 Посмотреть сообщение
for (i=1;i<20;i++)
{
if(a[i]>a[i+1])
{
index=i;
Неверно! Ты тут не с предыдущим сравниваешь, а со следующим. Верно так!
C++
1
2
3
4
5
6
7
8
for (i=1;i<20;i++)
{
if(a[i]>a[i-1])
{
index=i;
printf ("\nindex elementov > predidyshego:%d",index);
}
}
Добавлено через 48 секунд
Цитата Сообщение от lena13 Посмотреть сообщение
for (i=1;i<20;i++)
{
if((a[i]>0 && a[i+1]>0) || (a[i]<0 && a[i+1]<0))
{
то же самое
lena13
2 / 2 / 0
Регистрация: 04.11.2012
Сообщений: 40
11.11.2012, 14:32  [ТС] #5
так он же найдет одну пару,а мне нужно что бы были две пары соседних элементов с одинаковыми знаками
m0nAde
4 / 4 / 1
Регистрация: 03.09.2011
Сообщений: 26
11.11.2012, 14:46 #6
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// fff.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "iostream.h"
 
bool EstLiDvePariOiinakovimiZnakami(int[],int);
void IndexiElementovBolshe(int[],int);
int UdvoenayaSumaPolElementov(int[],int);
int main(int argc, char* argv[])
{
    int a[20]={2,8,-45,36,64,-23,7,9,6,35,-44,3,1,-21,0,-5,56,4,-3,5};
    int sum=UdvoenayaSumaPolElementov(a,20);
    cout<<sum<<endl;
    IndexiElementovBolshe(a,20);
    cout<<endl;
    int k=EstLiDvePariOiinakovimiZnakami(a,20);
    cout<<k<<endl;
    return 0;
}
bool EstLiDvePariOiinakovimiZnakami(int a[],int m)
{
    for(int i=0;i<20;i++)
    {
        if(a[i]>0 && a[i+1]>0 || a[i]<0 && a[i+1]<0)
        {
            return true;
        }
        i++;
    }
    return false;
}
 
void IndexiElementovBolshe(int a[],int m)
{
    for(int i=1;i<m;i++)
    {
        if(a[i]>a[i-1])
        {
            cout<<i<<" ";
        }
    }
}
 
int UdvoenayaSumaPolElementov(int a[],int m)
{
    int sum=0;
    for(int i=0;i<m;i++)
    {
        if(a[i]>0)
        {
            sum+=2*a[i];
        }
    }
    return sum;
}
Добавлено через 1 минуту
надо взять пару,элементов потаму и i++ надо

Добавлено через 1 минуту
не понял нужно 2 пары соседних элементов ?
lena13
2 / 2 / 0
Регистрация: 04.11.2012
Сообщений: 40
11.11.2012, 14:46  [ТС] #7
да,две
m0nAde
4 / 4 / 1
Регистрация: 03.09.2011
Сообщений: 26
11.11.2012, 14:59 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool EstLiDvePariOiinakovimiZnakami(int a[],int m)
{
    for(int i=0;i<20;i++)
    {
        if(a[i]>0 && a[i+1]>0 || a[i]<0 && a[i+1]<0)
        {
            i+=2;
            if(a[i]>0 && a[i+1]>0 || a[i]<0 && a[i+1]<0)
            {           
                return true;
            }
        }
        i+=2;
    }
    return false;
}
Добавлено через 1 минуту
ну тогда меняем инкремент!!!
lena13
2 / 2 / 0
Регистрация: 04.11.2012
Сообщений: 40
11.11.2012, 15:00  [ТС] #9
спасибо) теперь я разобралась)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2012, 15:00
Привет! Вот еще темы с ответами:

Массив: найти номера столбцов с положительными элементами и записать их в одномерный массив - C++
ввести двумерный массив I . найти номера столбцов с положительными элементами и записать их в одномерный массив, отобразить его на экране. ...

Массив: Все элементы массива, кратные трем, записать в одномерный массив. - C++
Дан двумерный массив размером n x n? заполненный целыми числами. Все его элементы кратные трем, записать в одномерный массив.

Переписать произвольный одномерный массив в другой массив в обратном порядке - C++
Помогите написать прогу, вот задание. Переписать произвольный одномерный массив в другой массив в обратном порядке.

Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив - C++
Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив. #include &lt;iostream&gt; using namespace std; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.11.2012, 15:00
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru