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

Задача на одномерный массив - C++

Восстановить пароль Регистрация
 
Pavlo-
1 / 1 / 0
Регистрация: 24.10.2012
Сообщений: 46
28.10.2013, 01:53     Задача на одномерный массив #1
Здаствуйте. Помогите решить задачу. Надо сформировать одномерный массив целых чисел, используя генератор случайных чисел. Уничтожить элемент с номером К. И добавить после каждого четного элемента массива элемент со значением 0. Вот что у меня получилось. Буду рад любой помочи.
C++ (Qt)
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
#include <iostream>
using namespace std;
int main()
{
    const int n=20;
    int a[n];
    srand(8);
    for (int i=0; i<n ; i++)
    {
        a[i]=rand()%100-50;
        cout <<a[i]<<"  ";
    }
    int *Delet(int*a,int&n,int*voit);
    int t=0;
    int k=0;
    int number;
    cin >>number;
    int *b=new int [n-1];
    for (i=0; i<n-1; i++);
      if (a[i]!=number)
      {
          b[t]=a[i];
          t++;
      }
      delete[]a;
      for (i=1 ; i<n-1 ; i++)
          cout <<b[t]<<"  ";
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2013, 01:53     Задача на одномерный массив
Посмотрите здесь:

C++ Задача на одномерный массив)
C++ ЗАДАЧА НА ОДНОМЕРНЫЙ МАССИВ
C++ Задача на одномерный массив.
C++ Задача на одномерный массив
Задача на одномерный массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
28.10.2013, 02:18     Задача на одномерный массив #2
Цитата Сообщение от Pavlo- Посмотреть сообщение
Уничтожить элемент с номером К. И добавить после каждого четного элемента массива элемент со значением 0.
Дело в том, что статический массив не резиновый. Его размер фиксирован, пропуск надо чем-то заполнить, а новые элементы не вставить. Можно попробовать использовать динамический массив, но тогда надо будет первым пробегом определить новый размер, а вторым произвести вычисления и записать результаты в новый массив. Если хочется, то можно потом освободить память у исходного и, заново выделив память, скопировать значения из вспомогательного.

Добавлено через 37 секунд
Цитата Сообщение от Pavlo- Посмотреть сообщение
int *Delet(int*a,int&n,int*voit);
объявляйте функцию и её прототип за пределами main
Pavlo-
1 / 1 / 0
Регистрация: 24.10.2012
Сообщений: 46
28.10.2013, 11:24  [ТС]     Задача на одномерный массив #3
можете код как ето зделать дать?
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
28.10.2013, 18:10     Задача на одномерный массив #4
Код для Microsoft Visual C++ 2010 Express

Заголовочный файл stdafx.h

C++
1
2
3
4
5
6
7
8
9
10
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
#include <ctime>
#include <Windows.h>
Программа
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//Надо сформировать одномерный массив целых чисел, используя генератор случайных чисел. 
//Уничтожить элемент с номером К. И добавить после каждого четного элемента массива элемент со значением 0.
 
#include "stdafx.h"
 
using namespace std;
 
void CreateArray (int *&, int);
void ShowArray (int *&, int, string);
void CreateNewArray(int *&, int *&, int, int);
void ExpandArray (int *&, int *&, int);
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    
    int n;
    cout << "Введите n = ";
    cin >> n;
 
    int * arr = new int[n];
 
    CreateArray(arr, n); 
    ShowArray(arr, n, "Исходный массив: ");
 
    int k;
    cout << "Введите k = ";
    cin >> k;
 
    if (k >= n) 
    {
        cout << "Индекс k = " << k << " выходит за границы массива\n";
    }
    else 
    {
        int * newArr = new int[n - 1];
        CreateNewArray(arr, newArr, n - 1, k);
        ShowArray(newArr, n - 1, "Массив, из которого удален k-ый элемент: ");
        
        int temp = ((n-1)%2 == 0) ? n + (n - 1)/2 - 1 : n + (int)(n - 1)/2; 
 
        int * expandedArr = new int[temp];
 
        ExpandArray (newArr, expandedArr, temp);
        ShowArray(expandedArr, temp, "Массив, дополненный нулями: ");
 
        delete [] newArr;
        delete [] expandedArr;
    }
 
    delete [] arr;
 
    system("PAUSE");
    return 0;
}
 
//Создать массив из n целых случайных чисел
void CreateArray (int *&arr, int n)
{
    srand((unsigned)time(NULL));
    
    for (int i = 0; i < n; ++i)
    {
        arr[i] = rand()%20;
    }
}
 
//Вывести массив с поясняющей надписью
void ShowArray (int *&arr, int n, string title)
{
    cout << title << "\n";
    for (int i = 0; i < n; ++i)
    {
        cout << arr[i] << " ";
    }
    cout << "\n";
}
 
//Из массива выкинуть k-ый элемент
void CreateNewArray(int *&arr1, int *&arr2, int n, int k)
{
    for (int i = 0; i < n; ++i)
    {
        if(i < k)
        {
            arr2[i] = arr1[i];
        }
        else 
        {
            arr2[i] = arr1[i + 1];
        }
    }
}
 
//Дополнить массив нулями
void ExpandArray (int *&newArr, int *&expandedArr, int n)
{
    int k = 0, m = 0;
    for (int i = 0; i < n; ++i)
    {
        if (i == (1 + k))
        {
            expandedArr[i] = 0;
            k += 3;
        }
 
        else 
        {
            expandedArr[i] = newArr[m];
            ++m;
        }
 
    }
}
Yandex
Объявления
28.10.2013, 18:10     Задача на одномерный массив
Ответ Создать тему
Опции темы

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