Здравствуйте, прошу помощи так как уже не знаю что не так
дали задание :
Поменять местами максимальный и последний отрицатель-
ный элементы массива А (40).
вот что у меня получилось
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 40
int main(void)
{
int M[SIZE], i, c, max, min, i_min;
srand(time(NULL));
printf("Now we have array:\n");
for (i = 0; i < SIZE; i++)
{
M[i] = rand ()%101-50;
printf("%d ", M[i]);
}
c=0;
max = M[0];
for(i = 1; i < SIZE; i++)
if (M[i] > max)
{
max = M[i];
c = i;
}
min=SIZE-1;
for (i=SIZE-1; i!=0; i--)
if (M[i]<0)
{
min = M[i];
c = i;
}
M[c] = M[max];
M[max]=M[min];
M[min] = M[c];
printf("\nNow we have array:\n ");
for(i = 0; i < SIZE; i++)
printf("%d ", M[i]);
}
выводит то же самое что и в начале и добавляет еще одно число по типу 1687
подскажите что не так
C/C++
Поменять местами максимальный и последний отрицатель- ный элементы массива А (40)
а почему for (i=SIZE-1; i!=0; i--) почем обошли 0, если все положительные и в 0 отрицательное?
И поменять местами, значит с1 и с2 позиции должны быть
max = M[i]; тут значение max
а при обмене оказывается это индекс
M[c] = M[max];
M[max]=M[min];
M[min] = M[c];
ничего не понял
И поменять местами, значит с1 и с2 позиции должны быть
max = M[i]; тут значение max
а при обмене оказывается это индекс
M[c] = M[max];
M[max]=M[min];
M[min] = M[c];
ничего не понял
Алексей Серафименко
там ещё есть переменная min, которая непонятно зачем нужна. Опять значение превращается в индекс.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define SIZE 40
#define EMPTY -1
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
int max_elemenet(int* a) {
int index_max = 0;
int i;
for (i = 1; i < SIZE; ++i) if (a[i] > a[index_max]) index_max = i;
return index_max;
}
int last_negative_elemenet(int* a) {
int i;
for (i = SIZE - 1; i >= 0; --i) if (a[i] < 0) return i;
return -1;
}
void swap(int* a, int* b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
int main(void) {
int M[SIZE];
int i;
int me_index, lne_index;
srand((unsigned)time(NULL));
for (i = 0; i < SIZE; ++i) M[i] = RAND(-50, 1000);
for (i = 0; i < SIZE; ++i) printf("%5i", M[i]);
puts("\n");
lne_index = last_negative_elemenet(M);
if (lne_index == EMPTY) puts("No negative values found!");
else {
me_index = max_elemenet(M);
swap(&M[me_index], &M[lne_index]);
for (i = 0; i < SIZE; ++i) printf("%5i", M[i]);
puts("\n");
}
system("pause > nul");
return 0;
}
#include <stdio.h>
#include <time.h>
#define SIZE 40
#define EMPTY -1
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
int max_elemenet(int* a) {
int index_max = 0;
int i;
for (i = 1; i < SIZE; ++i) if (a[i] > a[index_max]) index_max = i;
return index_max;
}
int last_negative_elemenet(int* a) {
int i;
for (i = SIZE - 1; i >= 0; --i) if (a[i] < 0) return i;
return -1;
}
void swap(int* a, int* b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
int main(void) {
int M[SIZE];
int i;
int me_index, lne_index;
srand((unsigned)time(NULL));
for (i = 0; i < SIZE; ++i) M[i] = RAND(-50, 1000);
for (i = 0; i < SIZE; ++i) printf("%5i", M[i]);
puts("\n");
lne_index = last_negative_elemenet(M);
if (lne_index == EMPTY) puts("No negative values found!");
else {
me_index = max_elemenet(M);
swap(&M[me_index], &M[lne_index]);
for (i = 0; i < SIZE; ++i) printf("%5i", M[i]);
puts("\n");
}
system("pause > nul");
return 0;
}
Похожие вопросы
- Заменить нулями элементы массива, которые расположены между первым минимальным и последним максимальным элементами масси
- Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел
- В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива
- Вычислить произведение нечетных элементов массива В с++
- Можно ли через функцию memset записать число в элемент массива больше чем 255? (Си)
- Упорядочить элементы массива по возрастанию на языке Си
- Сортировка элементов массива методом Шелла
- С++ Найти максимальный элемент массива. Не принимает задачу.
- Найти произведение элементов массива а, состоящего из 25 целых чисел, кратных 2 на Паскаль
- Как удалить элемент массива в C++