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

Подлатать функцию для массива

12.01.2017, 15:13. Просмотров 331. Ответов 6
Метки нет (Все метки)

День добрый! Захотел собственно в (1) избавиться от всего в main() кроме вызова. (т.е. сделать createArray как 2ю функцию) Но собственно столкнулся с проблемкой: а что собственно мне надо вернуть в createArray т.к возвращение *a && size ничего не меняет - в вызове minSearch-а пишет что не объявлены a и size. Собственно, я потому и в растерянности. Шото упустил в(2)
(1)
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <iomanip>
#include <math.h>
#include <stdlib.h>
 
using namespace std;
 
int minSearch(int *a, int size){
    int min = a[0];
    for (int i = 0 ; i < size ; i++)
    if (a[i]<min) min=a[i];
    return min;
}
 
 
int main(int argc, char *argv[]){
    setlocale(LC_ALL, "Russian");
    int size; cout << "Вв размер м-ва:"; cin >> size;
    int a[size];
    for (int i = 0 ; i < size ; i++)
    a[i] = rand() % 20 - 13;
    cout << "М-в:" << endl; 
    for (int i = 0; i < size; i++)
    cout << setw(6) << a[i];
    int min = minSearch(a,size);  
    cout << "\nmin = "<< ' ' << min << endl;
    return 255;
}

(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
using namespace std;
 
int minSearch(int *a, int size){
    int min = a[0];
    for (int i = 0 ; i < size ; i++)
    if (a[i]<min) min=a[i];
    return min;
}
 
int createArray(){
    int size; cout << "Введите размер массива:"; cin >> size;
    int a[size];
    for (int i = 0 ; i < size ; i++)
    a[i] = rand() % 20 - 13;
    cout << "Массив:" << endl; 
    for (int i = 0; i < size; i++)
    cout << setw(6) << a[i];
    return *a;
    return size;
}
int main(int argc, char *argv[]){
    setlocale(LC_ALL, "Russian");
    createArray();
    int min = minSearch(a, size);  
    cout << "\nmin = "<< ' ' << min << endl;
    return 255;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2017, 15:13
Ответы с готовыми решениями:

Выделение памяти для массива через функцию и использование этого массива
Я определяю свою структуру, создаю динамический массив, где будут храниться элементы этой...

Создать функцию для создания динамического массива
Как создать функцию в другом заголовочном файле, которая будет создавать двумерный динамический...

Составить функцию для сортировки (упорядочения) массива
19. Составить функцию для сортировки (упорядочения) массива mas из n элементов по возрастанию...

Написать функцию replace для массива char'ов
Нужно написать функцию замены подстроки f на подстроку t в строке а: int replace(char a, const...

6
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
12.01.2017, 15:38 2
Цитата Сообщение от NS-17_R-18 Посмотреть сообщение
cout << "Введите размер массива:"; cin >> size;
Цитата Сообщение от NS-17_R-18 Посмотреть сообщение
cout << "Массив:" << endl;
Это должно быть в main или в отдельной функции. Не надо делать кашу.

Можете посмотреть примеры оформления
Образцы (шаблоны) программ для типовых задач

Добавлено через 1 минуту
И у вас используются VLA массивы. Они не входят в стандарт. Их могут заменить динамические массивы, но стоит не забывать освобождать память.
Функция createArray должна возвращать указатель на сформированный массив (в динамической памяти).
1
0 / 0 / 2
Регистрация: 08.03.2016
Сообщений: 83
12.01.2017, 15:55  [ТС] 3
Цитата Сообщение от MrGluck Посмотреть сообщение
Можете посмотреть примеры оформления
Это то я знаю =) Просто ради интереса хочется абсолютно от всего ,кроме вызовов, уйти в main()
Вот "порасчленял" но всеравно вылезло лишь больше необъявленных
Кликните здесь для просмотра всего текста
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
int minSearch(int *a, int size){
    int min = a[0];
    for (int i = 0 ; i < size ; i++)
    if (a[i]<min) min=a[i];
    return min;
}
 
int createArray(int size){
    int *a = new int [size];
    for (int i = 0 ; i < size ; i++)
    a[i] = rand() % 20 - 13;
    return *a;
    
}
 
void printArray(int size){
    cout << "Массив:" << endl; 
    for (int i = 0; i < size; i++)
    cout << setw(6) << a[i];
}
 
int addSize(){
    int size; cout << "Вв размер м-ва:"; cin >> size;
    return size;
}
 
int main(int argc, char *argv[]){
    setlocale(LC_ALL, "Russian");
    addSize();
    createArray(size);
    printArray(size)
    int min = minSearch(a, size);  
    cout << "\nmin = "<< ' ' << min << endl;
    return 255;
}
0
Хитрая блондиночка $)
1460 / 974 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
12.01.2017, 16:05 4
Цитата Сообщение от NS-17_R-18 Посмотреть сообщение
избавиться от всего в main() кроме вызова.
STL допустим?
0
0 / 0 / 2
Регистрация: 08.03.2016
Сообщений: 83
12.01.2017, 16:17  [ТС] 5
Цитата Сообщение от Hikari Посмотреть сообщение
STL
Чомуб и нет, лишь знать что ето такое для начала. А то я тот еще сверхразум. Вроде, это были шаблоны ?
0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
12.01.2017, 16:35 6
Разбил ваш код на функции. Дальнейшее разбиение нерационально
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
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
 
using namespace std;
 
int MinSearch(int *a, const int size)
{
    int min = a[0];
    for (int i = 1; i < size; i++)
        if (a[i] < min)
            min = a[i];
    return min;
}
 
int* Create(const int size)
{
    int *a = new int[size];
    for (int i = 0; i < size; i++)
        a[i] = rand() % 20 - 13;
    return a;
}
 
void Free(int *a)
{
    delete[] a;
}
 
void Print(const int *a, const int size)
{
    cout << "М-в:" << endl;
    for (int i = 0; i < size; i++)
        cout << setw(6) << a[i];
}
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    srand(time(0));
    int size;
    cout << "Вв размер м-ва:";
    cin >> size;
 
    int *a = Create(size);
    Print(a, size);
    cout << "\nmin = " << ' ' << MinSearch(a, size) << endl;
 
    Free(a);
}
1
Хитрая блондиночка $)
1460 / 974 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
12.01.2017, 19:10 7
Цитата Сообщение от NS-17_R-18 Посмотреть сообщение
Чомуб и нет
Хм... Тогда с коленки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
#include <iomanip>
using namespace std;
int main()
{
    int size; cout << "Вв размер м-ва:"; cin >> size;
    vector<int> a;
    a.resize(size);
    for_each(a.begin(), a.end(), [](int &i) {i = rand() % 20 - 13; cout << i << setw(6); });
    cout << "\nmin = " << ' '; cout << *min_element(a.begin(), a.end()) << endl;
    cin.ignore();
    cin.get();
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2017, 19:10

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

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

Написать функцию для выполнения сдвига к элементов массива
Нужна функция, которая сдвигала бы массив вправо к раз, при этом первому элементу после сдвига...

Написать функцию для записи в файл массива структур
помогите написать программу... может у кого нибудь уже есть готовая... нужно: 1) написать функцию...

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


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

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

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