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

Поменять местами наименьшее значение массива с последним элементом (с указателями) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
enota
0 / 0 / 0
Регистрация: 03.03.2012
Сообщений: 36
19.03.2012, 22:52     Поменять местами наименьшее значение массива с последним элементом (с указателями) #1
В массиве C из N элементов найти элемент, имеющий наименьшее значение и поменять его местами с последним элементом. Значение N задать при помощи ввода, а сам массив сформировать из случайных чисел в диапазоне от -100 до 100.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2012, 22:52     Поменять местами наименьшее значение массива с последним элементом (с указателями)
Посмотрите здесь:

В квадратной матрицы поменять местами столбик, содержащий наибольшее значение со столбиком, который содержит наименьшее значение C++
наименьшее значение в массиве поменять с последним элементом в массиве C++
Массивы. Найти максимальный элемент и поменять его с последним элементом массива C++
В массиве из 10 чисел найти наименьший элемент и поменять его местами с последним элементом C++
Найти элементы, имеющие наименьшее и наибольшее значение и поменять их местами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
19.03.2012, 23:11     Поменять местами наименьшее значение массива с последним элементом (с указателями) #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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <algorithm>
 
int main()
{
        int n;
        int *mass;
 
        std::cout << "Введите N: ";
        std::cin >> n;
 
        mass = new int[n];
 
        srand(time(NULL));
 
        for(int i = 0; i < n; i++)
        {
                mass[i] = rand() % 201 - 100;
 
                std::cout << std::setw(5)  << mass[i];
        }
 
        std::cout << std::endl;
 
        std::swap(mass[int(std::find(mass,mass+n,*std::min_element(mass,mass+n)) - mass)],mass[n-1]);
 
        for(int i = 0; i < n; i++)
                std::cout << std::setw(5) << mass[i];
 
        std::cout << std::endl;
 
        delete[] mass;
 
        return 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
20.03.2012, 00:14     Поменять местами наименьшее значение массива с последним элементом (с указателями) #3
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
// ------------------
 
void swap(int* a, int* b)
{
   int t = *a;
   *a = *b;
   *b = t;
}
 
// -------------------
 
int random_range(int low, int high)
{
   return rand() % (high - low + 1) + low;
}
 
// ------------------
 
void write_arr(int* arr, int n)
{
   int i;
   for(i = 0; i < n; ++i)   
      printf("%d ", arr[i]);
   putchar('\n');
}
 
// ------------------
 
int* min_element(int* arr, int n)
{
   int i;
   int* min = &arr[0];
   for(i = 1; i < n; ++i)
      if(arr[i] < *min) min = &arr[i];   
 
   return min;
}
 
// ------------------
 
int main(void)
{   
   int n, i; 
   int *min;
   int* c;
 
   printf("input n: ");
   if(scanf("%d", &n) != 1 || n < 1) return 1;
 
   c = (int*)malloc(n * sizeof(int));
   if(!c) return 2;
 
   srand(time(NULL));
 
   for(i = 0; i < n; ++i)   
      c[i] = random_range(-100, 100);      
   
   write_arr(c, n);
   min = min_element(c, n);
   swap(min, c + n - 1);
   write_arr(c, n);
   free(c);
 
   return 0;
}
enota
0 / 0 / 0
Регистрация: 03.03.2012
Сообщений: 36
22.03.2012, 22:33  [ТС]     Поменять местами наименьшее значение массива с последним элементом (с указателями) #4
извините,но чего то он не меняет или не так как нужно
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
22.03.2012, 23:32     Поменять местами наименьшее значение массива с последним элементом (с указателями) #5
enota, уточните какой из предложенных вариантов у вас не работает, и приведите пример входных и выходных данных по которым было бы видно, что программа работает неверно.
enota
0 / 0 / 0
Регистрация: 03.03.2012
Сообщений: 36
26.03.2012, 10:48  [ТС]     Поменять местами наименьшее значение массива с последним элементом (с указателями) #6
извините,а что это значит?
C
1
2
3
4
 int random_range(int low, int high)
{
   return rand() % (high - low + 1) + low;
}
может что попроще

Добавлено через 55 минут
помогите,пожалуйста,разобраться
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
26.03.2012, 11:54     Поменять местами наименьшее значение массива с последним элементом (с указателями) #7
Цитата Сообщение от enota Посмотреть сообщение
извините,а что это значит?
int random_range(int low, int high)
функция генерации числа в диапазоне от low до high.
Цитата Сообщение от enota Посмотреть сообщение
может что попроще
C
1
2
3
4
5
6
for(i = 0; i < n; ++i)   
{
    // rand() % 201 даст случайное число от 0 до 200, 
    // отнимаем от него 100 и получаем число в диапазоне от -100 до 100
    c[i] = rand() % 201 - 100; 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2012, 12:27     Поменять местами наименьшее значение массива с последним элементом (с указателями)
Еще ссылки по теме:

Найти максимальный по абсолютной величине элемент и поменять его местами с последним элементом матрицы C++
C++ Максимальный элемент массива поменять с последним элементом
Третий положительный элемент поменять местами с последним элементом массива C++

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
26.03.2012, 12:27     Поменять местами наименьшее значение массива с последним элементом (с указателями) #8
Цитата Сообщение от enota Посмотреть сообщение
помогите,пожалуйста,разобраться
ты сначала ответь на вопросы, которые тебе задали тут
Yandex
Объявления
26.03.2012, 12:27     Поменять местами наименьшее значение массива с последним элементом (с указателями)
Ответ Создать тему
Опции темы

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