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

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

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

Задача на массив - C++

27.12.2011, 01:22. Просмотров 811. Ответов 1
Метки нет (Все метки)

Добрый вечер. В программировании я недавно - так что у меня есть проблемы даже с элементарными вещами.
Столкнулся с такой задачей :

При выполнении работы используются статические массивы. Для организации статических массивов с псевдопеременными границами необходимо объявить массив достаточно большой длины N. Затем пользователь вводит реальную длину массива (не больше N) и работает с массивом той длины, которую он сам указал. Остальные элементы (хотя память под них и будет выделена) не рассматриваются. При уменьшении или увеличении длины массива необходимо изменять его реальную длину.

Удалить первый элемент равный 0. Добавить после каждого четного элемента массива элемент со значением m[ i-1 ]+2.

С удалением первого элемента равного нулю у меня все получилось. А вот как добавить элемент со значением и расширить массив у меня никак не получается.

Вот код, который я написал. Посоветуйте как решить вторую часть задачи и подскажите грамотно ли я пишу код. Спасибо

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
57
58
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
#include <locale>
 
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{   
    srand ((unsigned)time(NULL));
    int n,i,j,k=0,A[900];
 
    cout<< "Enter the size of massiv :";
    cin>>n;
 
    for (i=1;i<=n;i++)
    A[i]=rand ()%6;
 
    for (i=1;i<=n;i++ ) cout<<A[i]<<" ";
    cout<<endl;
    for (i=1;i<=n;i++)
    {
    if (A[i]==0) 
    {
    for (j=i;j<=n-1;j++)
    A[j]=A[j+1];
    n--;
    break;
    } 
    }
    for (i=1;i<=n;i++ ) cout<<A[i]<<" ";
    cout<<endl;
 
 
    for (i=1;i<=n;i++)
    
    
        if (A[i]%2 == 0)
    {   for (j=n;j>=i;j--)  
        
        
      {
    
        A[j+1]=A[j];
            n++;
        A[i]=2;
        i++;
        }}
    
    
    for (i=1;i<=n;i++ ) cout<<A[i]<<" ";
    cout<<endl;
    return 0;
}
Добавлено через 3 часа 21 минуту
Конкретно интересует этот фрагмент


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        for (i=1;i<=n;i++)
        
        
                if (A[i]%2 == 0)
        {       for (j=n;j>=i;j--)      
                
                
          {
        
                A[j+1]=A[j];
                        n++;
                A[i]=2;
                i++;
                }}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2011, 01:22     Задача на массив
Посмотрите здесь:

задача записать в массив отрицательные элементы матрицы в массив и вывести их - C++
задача записать в массив отрицательные элементы матрицы в массив и вывести их #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Задача на массив и указатели.(массив из случайных чисел) - C++
Найти абсолютное значение,которое чаще остальных встречается в массиве. #include&lt;stdio.h&gt; #include&lt;time.h&gt; #include&lt;stdlib.h&gt; ...

Задача на массив - C++
Ребят, срочно нужна ваша помощь. В понедельник зачет, а я в этом ничего не шарю, пожалуйста, выручайте. Если можете, напишите как это...

задача на массив - C++
Array39. Дан массив размера N. Найти количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или...

Массив Задача - C++
День добрый! Помогите с массивом решить задачу Дан массив размера N. Найти номера двух ближайших по значению элементов из этого массива...

Задача на массив - C++
Есть две задачи на массив верно выполнены, но нужно задавать массив с клавиатуры а не в самой программе, как это выполнить? в методичке не...

Задача на Массив - C++
Задано числа а1,a2,...,a10 и массив Аx. Заменить нулями в массиве А те элементы с парной суммой индексов для которых есть такие, которые...

задача на массив - C++
Дан массив из n целых чисел. Для каждого числа, входящего в массив, найти сумму цифр этого числа. Верно ли утверждение, что максимальное...

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

Задача на массив - C++
Добрый день! Помогите с решением данного массива: Найти сумму положительных элементов линейного массива целых чисел. Размерность массива...

задача на Массив - C++
Дан масив Скопировать все его элементы в другой массив такого же размера в обратном порядке расположения элементов

Массив Задача - C++
День добрый!! Помогите с задачей. Дан массив размера N. Найти номера двух ближайших по значению элементов из этого массива (то есть...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 94
27.12.2011, 10:45     Задача на массив #2
Во первых, в С/С++ массив начинается не с первого элемента, а с нулевого, поэтому заменяйте ваши
C++
1
for (i=1;i<=n;i++ )
на
C++
1
for (i = 0; i < n; i++)
ну и по заданию, замените ваш проблемный фрагмент кода на
C++
1
2
3
4
5
6
7
8
9
10
11
    for (i = 0; i < n; i++)
        if (A[i] % 2 == 0 && A[i] != 0) //исключаем случай когда считается 0 % 0, т.е. деление на 0
        {
            n++; //увеличим размер массива
            i++; //элемент, который вставим, не рассматриваем
            for (j = n; j >= i; j--)
            {
                A[j+1] = A[j];  //сначала передвинем массив, освободив место для элемента
            }
            A[i] = A[i-2] + 2; //и вставим элемент, причем индекс предыдущего элемента стал не i-1, а i-2
        }
Ответ Создать тему
Опции темы

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