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

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

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

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

22.12.2010, 18:04. Просмотров 394. Ответов 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++):

Проблемка - C++
#include &quot;stdafx.h&quot; #include &lt;math.h&gt; #include &lt;iostream&gt; int _tmain(int argc, _TCHAR* argv) { setlocale (LC_ALL,&quot;Russian&quot;);...

Проблемка с g++ - C++
Вот недавно установил винду (раньше была линь), и хотел чтоб всё было привычно, установил g++ компилятор, всё ок, взял написал код самый...

Проблемка - C++
Доброго всем времени суток. Подскажите,что это за ошибка и что не так? // linaer_system.cpp : Defines the entry point for the console...

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
igorrr37
1646 / 1274 / 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
1646 / 1274 / 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
1646 / 1274 / 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?
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.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2010, 17:39
Привет! Вот еще темы с ответами:

Проблемка с массивами - C++
В Си++ я недавно и возник вопрос. Есть к примеру массив a. Есть ли функция, определяющая конечный индекс массива? :scratch:

В чем проблемка? - C++
Сделал метод итерации, но програма после компиляции как бегущая строка... в чем ошибка програми? #include &lt;iostream.h&gt; #include...

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

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


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

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

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