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

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

Восстановить пароль Регистрация
 
Ferus
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 13
27.12.2011, 01:22     Задача на массив #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++
задача на Массив C++
Задача на Массив C++
C++ задача на массив
Задача на массив C++
C++ задача записать в массив отрицательные элементы матрицы в массив и вывести их
C++ Задача на массив и указатели.(массив из случайных чисел)
C++ задача на массив

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vandris
 Аватар для Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 90
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
        }
Yandex
Объявления
27.12.2011, 10:45     Задача на массив
Ответ Создать тему
Опции темы

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