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

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

Восстановить пароль Регистрация
 
lena13
2 / 2 / 0
Регистрация: 04.11.2012
Сообщений: 40
11.11.2012, 14:08     не получается доработать одномерный массив #1
дан массив из 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++
C++ не могу закончить программу. основу (как я считаю) я написала. доработать не получается
Массив: Все элементы массива, кратные трем, записать в одномерный массив. C++
Массив: найти номера столбцов с положительными элементами и записать их в одномерный массив C++
Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов) C++
Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 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
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 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
 Аватар для 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
 Аватар для 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 минуту
ну тогда меняем инкремент!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2012, 15:00     не получается доработать одномерный массив
Еще ссылки по теме:

Сформировать одномерный массив, удалить первый элемент с заданным значением, сдвинуть массив циклически C++
Как сложить массив чтоб получился одномерный массив? C++
Двумерный массив, поиск локального минимума - доработать код C++
Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив C++
Переписать произвольный одномерный массив в другой массив в обратном порядке C++

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

Или воспользуйтесь поиском по форуму:
lena13
2 / 2 / 0
Регистрация: 04.11.2012
Сообщений: 40
11.11.2012, 15:00  [ТС]     не получается доработать одномерный массив #9
спасибо) теперь я разобралась)
Yandex
Объявления
11.11.2012, 15:00     не получается доработать одномерный массив
Ответ Создать тему
Опции темы

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