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

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

Войти
Регистрация
Восстановить пароль
 
jakewow
0 / 0 / 1
Регистрация: 22.12.2010
Сообщений: 27
#1

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

22.12.2010, 18:04. Просмотров 390. Ответов 6
Метки нет (Все метки)

Всем привет, в общем у меня такая задача: в целочисленном массиве после каждых 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++
В Си++ я недавно и возник вопрос. Есть к примеру массив a. Есть ли функция, определяющая конечный индекс массива? :scratch:

Проблемка с инициализацией - C++
Допустим есть такой класс. Работаем именно с классом Temp, в котором указатель на класса IntArr производный от Int. Итак вопрос. Как...

Небольшая проблемка) - C++
Всем доброго времени суток, у меня возникла проблема с напиванием одной программы задание следующее :&quot;Написать функцию нахождения MAX среди...

Проблемка с cin - C++
Мне нужно сделать так, чтобы в конце программы нажимался &quot;enter&quot;. Ну, как в паскалеreadln;

Проблемка с exit - C++
Пример из книги. #include &lt;iostream&gt; #include &lt;iomanip&gt; // для setw() #include &lt;process.h&gt; // для exit() using...

Проблемка с указателями - C++
Нужно перегрузить &quot;+&quot; чтобы он делал слияние 2ух массивов(элементы не повторялись) вот код: #include &lt;iostream.h&gt; #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
1641 / 1269 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
22.12.2010, 20:15     Проблемка с массивом #2
берешь второй массив и перекладываешь в него по одному элементу с проверкой на отриц. если счетчик насчитает три штуки - вставь ноль и т.д. сделал бы но только на с++
jakewow
0 / 0 / 1
Регистрация: 22.12.2010
Сообщений: 27
23.12.2010, 17:36  [ТС]     Проблемка с массивом #3
Цитата Сообщение от igorrr37 Посмотреть сообщение
берешь второй массив и перекладываешь в него по одному элементу с проверкой на отриц. если счетчик насчитает три штуки - вставь ноль и т.д. сделал бы но только на с++
Я не такой еще прошаренный в этом деле.
перекладываешь в него по одному элементу с проверкой на отриц
как это осуществить?
igorrr37
1641 / 1269 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 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
1641 / 1269 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 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++
Сделал метод итерации, но програма после компиляции как бегущая строка... в чем ошибка програми? #include &lt;iostream.h&gt; #include...

Маленькая проблемка со switch - C++
Проблема - невозможность использование перемнной типа string как управляющей в операторе switch. Цель - сделать некий аналог. рабочую...

Небольшая проблемка с прогой. - C++
Здравствуйте! возникла проблема. По идее програ должна брать рандромные слова из файлов и выводить их на экран. #include...

Проблемка с функцией gets(). Подскажите - C++
Проблема следующего характера: при первом проходе в цикле(i=0) функция store() работает корректно. При шаге i=1 и дальше строка...


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

Или воспользуйтесь поиском по форуму:
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     Проблемка с массивом
Ответ Создать тему
Опции темы

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