Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 40
1

Массив: Написать функцию, которая возвращает число, необходимое прибавить к массиву, и функцию добавления в массив.

21.03.2018, 21:42. Просмотров 1658. Ответов 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
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <stdio.h>
#include <fstream>
#include <cmath>
 
using namespace std;
 
void Fill_Array_klava (int* const arr, const int size)           //заполняет массив с клавиатуры
{
for (int i=0; i<size; i++)
 {
     cin >> arr[i];
 }
}
void Fill_Array_file(int* const arr)                             //заполняет массив из файла
{
    ifstream in("input.txt");
    if(in)
    {
        int i=0;
        while(!in)
        {
            in >> arr[i];
            i++;
        }
    }
    else
    {
        cout << "Файл не найден в директории.\nFile not in directory.";
    }
}
void Show_array (const int* const arr, const int size)           //выводит массив
{
    for(int i=0; i<size; i++)
    {
        cout << arr[i] << "\t";
    }
}
void arraydeleteindex (int *&arr, int &size, int index)          //удаляет по индексу
{
 
    size--;
    int *newArr = new int [size];
    for (int i=0; i < size; i++)
    {
        if(i<index)
        {
            newArr[i]=arr[i];
        }
        else if(i>=index)
        {
            newArr[i]=arr[i+1];
        }
    }
    delete[] arr;
    arr = newArr;
}
void arraAddIndex (int *&arr,int &size, int index)   //Добавляет элемент по индексу
{
    int j=0;
    int *newArr= new int [size+1];
    for(int i=0; i < size; i++)
    {
        if(arr[i] > 9 && arr[i] < 100)
        {
            newArr[i]=arr[index];
        }
        newArr[i]=arr[i];
    }
 
    size++;
    delete[] arr;
    arr=newArr;
}
bool is_prime(int z) {
 
        if ( z < 2 ) return false;
        if ( z == 2 ) return true;
        if ( z%2 == 0 ) return false;
 
        double lim = sqrt(z);
        int j=3;
        while(j<=lim && z%j)
        {
            j+=2;
        }
                    if(j<=lim)
            {
                return false;
            }
            else
            {
                return true;
            }
}
void kratnoe (int *&arr, int &size, int krat)                    //кратное числу krat
{
    for(int i=0; i < size; i++)
    {
        if(arr[i]%krat == 0)
        {
            arraydeleteindex(arr, size, i);
        }
    }
}
int find_max_simp (int *arr,int size)
{
    int index=-1, i=0;
    while(i<size && !is_prime(arr[i]))
    {
        i++;
    }
    if(i<size)
    {
        index = i;
        int max=arr[i];
        while(i<size)
        {
            if(arr[i]> max && is_prime(arr[i]))
            {
                max=arr[i];
                index=i;
            }
            i++;
        }
    }
    return index;
}
bool dvuzn(int r)
{
    if(r>9 &&r<100)
    {
        return true;
    }
    return false;
}
 
int summa_dvuzn(int *arr, int size)
{
    int i=0,index=-1;
    while(i<size && !dvuzn(arr[i]))
    {
        i++;
    }
    if(i<size)
    {
        index = i;
        while(i<size)
        {
            if(dvuzn(arr[i]))
            {
                index=i;
            }
            i++;
        }
    }
    return index;
 
}
 
void arrayAddIndex(int *&arr, int &size, int number) //добавить элемент в любое место
{
    int *newArr = new int[size + 1];
    int k=0;
    for (int i = 0; i < size + 1; i++)
    {
        if(arr[i] < 10 || arr[i] > 100)
        {
            newArr[i]= arr[i-k];
        }
        else if(arr[i] > 9 || arr[i] <100)
        {
            newArr[i] = number;
            k++;
        }
 
 
 
 
 
       /* if (i < index)
        {
            newArr[i] = arr[i];
        }
        else if (i == index)
        {
            newArr[i] = number;
        }
        else if (i > index)
        {
        newArr[i] = arr[i - 1];
        }*/
    }
        size++;
        delete[] arr;
        arr = newArr;
}
int main()
{
    system("chcp 1251 > null");
    int size;
    cout << "Введите размер массива: ";
    cin >> size;
    int *arr= new int [size];
    int simp=0,u=0,y=0;
    Fill_Array_klava(arr,size);
    cout << "Получился следующий массив: " << endl;
    Show_array(arr,size);
    cout << endl;
    arrayAddIndex(arr,size,1488);
    Show_array(arr,size);
    delete [] arr;
    return 0;
}
Знаю, что в функции arrayAddIndex написана бредятина, просто не охота к преподу с совсем пустыми руками идти.

Жду ваших советов...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2018, 21:42
Ответы с готовыми решениями:

Написать функцию, которая зануляет массив переданный как параметр и возвращает кол-во отрицательных элементов до зануления?
Написать функцию, которая зануляет массив переданный как параметр и возвращает кол-во отрицательных...

Массив чисел типа double передать в функцию, которая суммирует и возвращает сумму и массив
Написать функцию, которой передается массив чисел типа double, Функция суммирует элементы этого...

Написать функцию, которая по двум заданным одномерным массивам вычисляет двумерный массив и возвращает его максимальный элемент
Написать функцию, которая по двум заданным одномерным массивам (A размера m и B размера n)...

Создать функцию, которая возвращает массив в обратном порядке. Именно возвращает
Не могу никак создать функцию.

4
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
22.03.2018, 05:46 2
Ну, функцию для проверки двузначного числа написать не трудно...
C++
1
2
3
bool isTwoDigitNumber(int iNumber) {
    return (iNumber >= 10 && iNumber <= 99);
}
Далее - этой же функцией проверяете в цикле перебора элемента массива:
1. Нашли двузначное число.
2. Сдвинули массив вправо на N элементов (проще это делать с помощью доп. массива).
3. Вставили нужное значение.
1
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
22.03.2018, 14:10 3
Лучший ответ Сообщение было отмечено Umbetov как решение

Решение

Собственно, появилось немного свободного времени...

Накидал функции:
1. Функция определения, является ли число двузначным (возвращаемое значение - тип bool). Из предыдущего моего поста.
2. Функция получения количества двузначных чисел в массиве (a.k.a. на сколько увеличивать массив)
3. Функция вставки нового элемента в заданную позицию массива (число задается вручную).

Там есть также пример, как работает функция insertElement, и вывод массива в окно консоли, после его обработки (для наглядности).

Функцию вставки элемента в массив, думаю, сами дополните, чтобы можно было вставлять новый как до указанной позиции, так и после (времени на последнее - не хватило, уж извините).
0
Вложения
Тип файла: 7z project.7z (2.3 Кб, 8 просмотров)
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 40
22.03.2018, 16:40  [ТС] 4
Спасибо, сейчас буду разбираться. До и после организую.
0
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
22.03.2018, 16:53 5
До уже организовано, да и после - делается просто (надо лишь параметр функции с типом bool добавить, и смещение более активно обрабатывать)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2018, 16:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создать функцию, которая возвращает количество элементов массива, меньших чем число, заданное пользователем. Массив целочисленный, передается функции
Добрый вечер! Помогите пожалуйста) Создать функцию, которая возвращает количество элементов...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая...

Написать функцию, которая возвращает возведённое в степень число...
ПОЖАЛУЙСТА ПОМОГИТЕ НАПИСАТЬ ПРОГИ: 1) Написать функцию, которая возвращает возведённое в...

Написать функцию, которая принимает число, а возвращает его факториал
Написать функцию, в которую передают число х, а возвращает х! (факториал этого числа)(Консольное...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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