Попарный обмен местами между максимальными и минимальными значениями в массиве

bogdan7zahr

народ кто может,подсказать что не так со схемой? вот код
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
const int N=80;
int a[N], i=0, temp, i_max=0, i_min=0;
srand(time(NULL));
for (i=0; i<N; i++)
{
    a[i]=rand()%100 +1;
    printf("%d ",a[i]);
}
 for (i=1; i<N; i++)
 {
     if (a[i]>a[i_max])
         i_max=i;
     if (a[i]<a[i_min])
         i_min=i;
 }
 temp=a[i_max]; a[i_max]=a[i_min]; a[i_min]=temp;
 printf("\n\n");
for (i=0; i<N; i++)
{
    printf("%d ",a[i]);
}
 
return 0;
}
5 ответов

bogdan7zahr

Присвоения в 21 строке должны быть в теле второго цикла.Какова идея этого алгоритма?


bogdan7zahr

попарный обмен местами между максимальными и минимальными значениями в масиве


bogdan7zahr

попарный обмен местами между максимальными и минимальными значениями в масиве
Т.е. если имею массив 3, 1, -2, 5, 0, 48, то получить должны 3, 1, 48, 5, 0, -2 Так?


bogdan7zahr


bogdan7zahr

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <limits.h>
 
int main() {
 
    const int N = 80;
    int a[N], i = 0, temp, i_max = 0, i_min = INT_MAX;
    int p_max, p_min; /* позиции в массиве */
 
    srand(time(NULL));
 
    for (i = 0; i < N; i++) {
        a[i] = rand() % 100 + 1;
        printf("%d ", a[i]);
    }
 
    for (i = 1; i < N; i++) {
        if (a[i] > i_max) {
            i_max = a[i];
            p_max = i;
        }
        if (a[i] < i_min) {
            i_min = a[i];
            p_min = i;
        }
    }
 
    temp = a[p_max];
    a[p_max] = a[p_min];
    a[p_min] = temp;
 
    printf("\n\n");
 
    for (i = 0; i < N; i++) {
        printf("%d ", a[i]);
    }
 
    return 0;
}