Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Genc
1 / 1 / 1
Регистрация: 18.05.2015
Сообщений: 24
#1

Найти минимальный элемент массива и удалить четные элементы - C++

17.06.2015, 21:05. Просмотров 730. Ответов 8
Метки нет (Все метки)

Написать программу используя функции.
http://www.cyberforum.ru/cpp-beginners/thread1815816.html
 Комментарий модератора 
Нарушение п.5.18. Правил
18. Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
0
Миниатюры
Найти минимальный элемент массива и удалить четные элементы  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2015, 21:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти минимальный элемент массива и удалить четные элементы (C++):

Найти минимальный элемент массива, упорядочить элементы
Дан массив А(40). Найти минимальный элемент массива, упорядочить элементы,...

Найти минимальный элемент в списке и удалить все элементы равные минимальному (файловый ввод/вывод)
Каждую задачу данного раздела решить, реализовав список в виде линейно...

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

Найти минимальный элемент заданного массива и заменить им чётные по номеру элементы
Доброго времени суток, вот условие задачи: Найти минимальный элемент массива Т...

В двумерном массиве заменить все четные элементы на минимальный элемент матрицы
Задание: В двумерном массиве заменить все четные элементы на минимальный...

8
Mamoruhiko
41 / 39 / 47
Регистрация: 13.05.2015
Сообщений: 222
17.06.2015, 21:26 #2
C++
1
2
3
int b=1;
if ((a[i]%2!=0) && (a[i]<b)) 
b=a[i];
C++
1
2
if (a[i]%2==0)
a[i]=0;
Добавлено через 13 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include <iostream>
using namespace std;
 
void main()
{
    int a[4][4]={{4, 3, 2, 1},
            {0, 3, 2, 1},
            {0, 0, 2, 1},
            {0, 0, 0, 1}};
    for (int i=0; i<4; i++)
    {
        for (int j=0; j<4; j++)
            cout << a[i][j] << " ";
    cout << endl;
    }   
}
0
Genc
1 / 1 / 1
Регистрация: 18.05.2015
Сообщений: 24
18.06.2015, 07:45  [ТС] #3
Написать программу используя функции.
1. Среди элементов одномерного массива, имеющих нечетные значения, найти минимальный элемент и эго номер.
2. Удалить из одномерного массива все четные элементы, без изменения порядка.
3. Сформировать двумерный массив по образцу :
4321
0321
0021
0001
0
ronaldo
92 / 46 / 63
Регистрация: 16.06.2014
Сообщений: 375
18.06.2015, 09:00 #4
Genc,
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
#include <iostream>
#include <cstdlib>
using namespace std;
const int N=10;
int kolvo;
void foo1(int a[])
{
    int i,min=0,nomer;
    for(i=0;i<N;i++)
    if (a[i]%2 && (!min || a[i]<min)) {min=a[i];
                                       nomer=i;}
    cout<<min<<"\t"<<nomer<<endl;
};
int *foo2(int a[])
{
    int i,*b,j=0;
    b=new int[N];
    for(i=0;i<N;i++)
    if (a[i]%2) b[j++]=a[i];
    kolvo=j;
    return (int*)b;
};
void foo3(int n)
{
    int a[n][n],i,j,f,ff;
    for(i=0;i<n;i++)
    {f=i+1;
     ff=0;
     for(j=0;j<n;j++)
     {if (ff<f) a[j][i]=n-i;
      else a[j][i]=0;
      ff++;}
    }
    for(i=0;i<n;i++)
    {for(j=0;j<n;j++)
      cout<<a[i][j]<<"\t";
     cout<<endl;}
}
int main()
{
    int a[N],b=0,c=10,i,j=0,razmernost;
    for(i=0;i<N;i++)
    {a[i]=rand()%(c-b+1)+b;
     cout<<a[i]<<"\t";}
    cout<<endl;
    foo1(a);
    int *d=foo2(a);
    for(i=0;i<kolvo;i++)
     cout<<d[i]<<"\t";
    cout<<endl;
    cin>>razmernost;
    foo3(razmernost);
    return 0;
}
Эксперты C++, подскажите: как лучше освободить память, которую я выделил под массив b в функции foo2()?
0
andreysv
17 / 17 / 6
Регистрация: 02.07.2011
Сообщений: 67
18.06.2015, 09:12 #5
ronaldo, так не сойдёт?

C++
1
2
3
4
5
void foo5(int* p) {
    delete[] p;
}
 
foo5(d);
1
ronaldo
92 / 46 / 63
Регистрация: 16.06.2014
Сообщений: 375
18.06.2015, 19:08 #6
andreysv, ну до
C++
1
return (int*)b;
оператор delete, по идее, не вызовешь.

Стало быть, мой пример неудачный и память, выделенную под массив b, освободить не удастся никак?

Добавлено через 1 час 22 минуты
Всё, разобрался.
Genc, код из четвёртого поста нехороший, бери этот:
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
#include <iostream>
#include <cstdlib>
using namespace std;
const int N=10;
int kolvo;
void foo1(int a[])
{
    int i,min=0,nomer;
    for(i=0;i<N;i++)
    if (a[i]%2 && (!min || a[i]<min)) {min=a[i];
                                       nomer=i;}
    cout<<min<<"\t"<<nomer<<endl;
};
int *foo2(int a[],int *b)
{
    int i,j=0;
    for(i=0;i<N;i++)
    if (a[i]%2) b[j++]=a[i];
    kolvo=j;
    return b;
};
void foo3(int n)
{
    int a[n][n],i,j,f,ff;
    for(i=0;i<n;i++)
    {f=i+1;
     ff=0;
     for(j=0;j<n;j++)
     {if (ff<f) a[j][i]=n-i;
      else a[j][i]=0;
      ff++;}
    }
    for(i=0;i<n;i++)
    {for(j=0;j<n;j++)
      cout<<a[i][j]<<"\t";
     cout<<endl;}
};
int main()
{
    int a[N],b=0,c=10,i,razmernost;
    for(i=0;i<N;i++)
    {a[i]=rand()%(c-b+1)+b;
     cout<<a[i]<<"\t";}
    cout<<endl;
    foo1(a);
    int *d=new int[N];
    d=foo2(a,d);
    for(i=0;i<kolvo;i++)
     cout<<d[i]<<"\t";
    cout<<endl;
    cin>>razmernost;
    foo3(razmernost);
    return 0;
}
0
andreysv
17 / 17 / 6
Регистрация: 02.07.2011
Сообщений: 67
18.06.2015, 20:56 #7
Цитата Сообщение от ronaldo Посмотреть сообщение
Стало быть, мой пример неудачный и память, выделенную под массив b, освободить не удастся никак?
foo2 создаёт и возвращает блок памяти. В main вы стараетесь не потерять указатель на этот блок. foo5 освобождает память по указателю. В языке си нормально для структур данных использовать функции вида initMemoty, freeMemory. Здесь, по-моему, тоже.
В новом коде (не особо его разбирал)) функция foo2 принимает указатель b и возвращает его же. Хуже бы не стало, если бы вы вообще ничего не возвращали. Хотя может это вопрос стиля...
1
ronaldo
92 / 46 / 63
Регистрация: 16.06.2014
Сообщений: 375
19.06.2015, 07:27 #8
Цитата Сообщение от andreysv Посмотреть сообщение
foo2 создаёт и возвращает блок памяти. В main вы стараетесь не потерять указатель на этот блок. foo5 освобождает память по указателю.
То есть, если код из поста 5 добавить в код из поста 4, то указатели b (в функции foo2()), d (в функции main()), p (в функции foo5()) будут указывать на один и тот же блок памяти?
0
andreysv
17 / 17 / 6
Регистрация: 02.07.2011
Сообщений: 67
19.06.2015, 14:36 #9
Да.
1
19.06.2015, 14:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2015, 14:36
Привет! Вот еще темы с решениями:

Найти минимальный элемент массива, умножить на него все отрицательные элементы, стоящие слева
Вообщем условие такое: Среди отрицательных элементов массива найти минимальный,...

Найти минимальный положительный элемент массива, все элементы, начинающиеся с цифры 1, заменить на обратные
найти минимальный положительный элемент массива, все элементы начинающиеся с...

Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть
а)Дана последовательность n элементов в виде массива. Найти минимальный элемент...

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


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

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

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