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

Проблемка с массивом - C++

Восстановить пароль Регистрация
 
jakewow
0 / 0 / 1
Регистрация: 22.12.2010
Сообщений: 27
22.12.2010, 18:04     Проблемка с массивом #1
Всем привет, в общем у меня такая задача: в целочисленном массиве после каждых 3х отрицательных чисел идущих подряд вставить 0. Например первоначальный массив 17 32 -3 -5 -7 23 8, новый массив должен выглядеть так 17 32 -3 -5 -7 0 23 8. Уже часа 3 ломаю голову, ничего не могу придумать =(.
В самом массиве у меня 50 элементов, заполняется он случайным образом, можно конечно прописать сдвиг так:
if(m[i]<0 && m[i+1]<0 && m[i+2]<0){m[i+50]=m[i+49];m[i+49]=m[i+48];m[i+48]=m[i+47].....m[i+4]=m[i+3];m[i+3]=0;} Но это очень глупо и очень долго.
Пробовал вводить переменную например так
n=50;
b=n-1;
P3:
if(m[i]<0 && m[i+1]<0 && m[i+2]<0){m[i+n]=m[i+b];m[i+3]=0;}
n=n-1;
b=b-1;
if(i<kol_vo) goto P3;
все равно ничего не получается, думаю что-то тут намудрил не того
Язык Си. Помогите пожалуйста, буду очень благодарен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2010, 18:04     Проблемка с массивом
Посмотрите здесь:

C++ Проблемка с cin
Проблемка с инициализацией C++
C++ Небольшая проблемка)
C++ Проблемка
Проблемка с указателями C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
22.12.2010, 20:15     Проблемка с массивом #2
берешь второй массив и перекладываешь в него по одному элементу с проверкой на отриц. если счетчик насчитает три штуки - вставь ноль и т.д. сделал бы но только на с++
jakewow
0 / 0 / 1
Регистрация: 22.12.2010
Сообщений: 27
23.12.2010, 17:36  [ТС]     Проблемка с массивом #3
Цитата Сообщение от igorrr37 Посмотреть сообщение
берешь второй массив и перекладываешь в него по одному элементу с проверкой на отриц. если счетчик насчитает три штуки - вставь ноль и т.д. сделал бы но только на с++
Я не такой еще прошаренный в этом деле.
перекладываешь в него по одному элементу с проверкой на отриц
как это осуществить?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
23.12.2010, 18:29     Проблемка с массивом #4
как то так
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
#include <stdio.h>
#include<conio.h>
#include<iostream>
using namespace std;
 
 main()
{
    int arr[50];
        for(int i=0;i<50;i++){
        arr[i]=rand()%100-70;
    }
    int arr1[100];//suda perekidivat
    int count=0;
    int delta=0;
    for(int i=0;i<50;i++){
            arr1[i+delta]=arr[i];
            if(arr[i]<0)count++;
            else count=0;
            if(count==3){
                arr1[i+delta+1]=0;
                delta++;
                count=0;
            }
    }
    cout<<"ishodnii massiv\n";
    for(int i=0;i<50;i++){
        cout<<arr[i]<<" ";
       } 
    cout<<"\n\n";
    cout<<"\nposle\n";
    for(int i=0;i<50+delta;i++){
        cout<<arr1[i]<<" ";
    }
    getch();
}
jakewow
0 / 0 / 1
Регистрация: 22.12.2010
Сообщений: 27
27.12.2010, 16:45  [ТС]     Проблемка с массивом #5
Пробовал сделать на подобе, новый массив как-то криво выводит, вместо положительных элементов выводит 0, вместо отрицательных 1752983158 и другие числа
C
1
2
3
4
5
6
7
8
9
for(i=1;i<=kol_vo;i++)
masss[i+delta]=mass[i];
if(mass[i]<0)podschet=podschet+1;
else podschet=0;
if(podschet==0){masss[i+delta+1]=0;
delta=delta+1;
podschet=0;
for(i=1;i<=kol_vo+delta;i++)
printf("%d ", masss[i]); \\ вывод нового массива
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
27.12.2010, 17:08     Проблемка с массивом #6
Цитата Сообщение от jakewow Посмотреть сообщение
if(podschet==0)
for(i=1;i<=kol_vo+delta;i++)
if(podschet==0) - равно трём надо
почему в циклах i=1?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2010, 17:39     Проблемка с массивом
Еще ссылки по теме:

Проблемка C++
Проблемка с exit C++
Проблемка с g++ C++

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

Или воспользуйтесь поиском по форуму:
jakewow
0 / 0 / 1
Регистрация: 22.12.2010
Сообщений: 27
27.12.2010, 17:39  [ТС]     Проблемка с массивом #7
Цитата Сообщение от igorrr37 Посмотреть сообщение
if(podschet==0) - равно трём надо
На форуме опечатался чуток.
почему в циклах i=1?
Это не имеет большого значения. Если я ставлю i=1 выводит 50 элементов, i=0 - 51.
Yandex
Объявления
27.12.2010, 17:39     Проблемка с массивом
Ответ Создать тему
Опции темы

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