Другие языки программирования и технологии

поменяйте местами наибольший элемент данного одномерного массива с первым элементом и найменьший с последним ( язык си)

у меня не получается поменять их местами помоги пожалуйста.
#include <stdio.h>
#define BUF 10
int* min_element(int* v);
int* max_element(int* v);
void uswap(int* a, int* b);
void print(int* v);
int main(void) {
int v[BUF] = { 23, 15, 33, 42, 12, 62, 43, 28, 54, 39 };
print(v);
uswap(max_element(v), v);
uswap(min_element(v), &v[BUF - 1]);
print(v);
getchar();
}
int* min_element(int* v) {
int* mn = v, *q = v + BUF;
for (int* p = v + 1; p != q; ++p) if (*p < *mn) mn = p;
return mn;
}
int* max_element(int* v) {
int* mx = v, *q = v + BUF;
for (int* p = v + 1; p != q; ++p) if (*p > *mx) mx = p;
return mx;
}
void uswap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
void print(int* v) {
int* q = v + BUF;
for (int* p = v; p != q; ++p) printf("%3d", *p);
printf("\n");
}
Denis Maslov
Denis Maslov
68 213
Лучший ответ
Не получается? Не вижу попыток. кода что написан. Судя по всему даже и не пытался.
Виктор Суспицын #include
#include
int main ()
{
int *a;
int i, n, min, max;
int p; //больше
int j; //меньше
printf ("vvedite razmer :");
scanf("%i", &n);
a=(int*)malloc(sizeof(int)*n);
for (i=0;i<n;i++)
{
a[i]=rand()%100;
printf ("%i ", a[i]);
}
printf("\n");

max =-1; min = 999;
for (i=0;i<n;i++)
{
if (max < a[i])
{
max = a[i];
p = a[i];
a[i] = a[0];
}
if (min > a[i])

{
min = a[i];
min = j;
j= a[n - 1];
a[i] = a[n-1];

}
}
printf("%i, mesto %i", max, a[0]);
printf("\n");
printf ("%i, mesto %i ", min, a[n - 1]);

return 0;
}
Виктор Суспицын я только начаю и думал можно было бы с помощью метода пузырьков
Виктор Суспицын пробую с помощью функции swap
За час запилила на си++ (на си не умею)

#include <iostream
using namespace std;
int main() {
int arr[10] = {5, 1, 2, 4, 8, 11, 3, 3, 8, 7};
int max,min,i,j,z,y;
max=arr[0];
for (i = 0; i < 10; ++i)
{ if (arr[i] > max) {max = arr[i];z=i;}}
min=arr[0];
for (j = 0; j < 10; ++j)
{ if (arr[j] < min) {min = arr[j];y=j;}}
cout<<"Исходный массив: "<<endl;
for (i = 0; i < 10; ++i)
{cout<<arr[i]<<" ";}
cout<<endl;
cout<<"max="<<max<<endl;
cout<<"min="<<min<<endl;
cout<<endl;
arr[z]=arr[0];
arr[0]=max;
arr[y]=arr[9];
arr[9]=min;
cout<<"Итоговый массив: "<<endl;
for (i = 0; i < 10; ++i)
{cout<<arr[i]<<" ";}
return 0; }
void swap(int *a, int *b)
{
int t;
t = *a, *a = *b, *b = t;
}

***
int n = 1, m = 2;
swap(&n, &m);

Конкретно для массива:
swap(&a[0], &a[max]); /*Наибольший с первым элементом, где max - индекс максимального элемента массива*/
swap(&a[N], &a[min]); /*Наименьший с последним, где min - индекс минимального элемента массива, а N - размер этого массива*/
Khurshid ***
Khurshid ***
6 159

Похожие вопросы