Другие языки программирования и технологии
поменяйте местами наибольший элемент данного одномерного массива с первым элементом и найменьший с последним ( язык си)
у меня не получается поменять их местами помоги пожалуйста.
#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");
}
#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");
}
Не получается? Не вижу попыток. кода что написан. Судя по всему даже и не пытался.
За час запилила на си++ (на си не умею)
#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; }
#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 - размер этого массива*/
{
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 - размер этого массива*/
Похожие вопросы
- Помогите с С++. Надо найти произведение элементов одномерного массива между первым и последним 0.
- КАК С ГЕНЕРИРОВАТЬ ДВА МАССИВА ИЗ СЛУЧАЙНЫХ ЧИСЕЛ С ПОМОЩЬЮ RANDOM НА ЯЗЫКЕ СИ? Я смог только заполнить от 0 до 255
- Даны 2 матрицы 2х3. Нужно поменять местами наибольшее значение из 1 с наименьшим из 2. На C++
- Язык Си: В одномерном массиве, состоящем из n вещественных элементов, вычислить: номер максимального по модулю элемента
- В одномерном массиве, состоящем из n вещественных элементов, вычис- лить: 39 1) сумму положительных элементов массив
- Microsoft Visual C++ 6.0 В одномерном массиве, состоящем из n вещественных элементов, вычислить...
- Поменять местами первый и последний отрицательные элементы массива B (18). (Язык Си) (Язык Си)
- Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:
- как при сортировке одномерного массива оставить на месте неположительные элементы
- Составьте программу, отыскивающую наибольший элемент массива A(N) из числа принадлежащим интервалу {min,(min+max\2))
#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;
}