примеры решения задач на одномерные массивы
Пример 1
Дан вещественный массив размера N. Размер массива и значения его элементов вводятся пользователем. Найти сумму всех локальных минимумов массива. Локальный минимум – элемент массива меньший по значению двух соседних элементов данного массива (исключая крайние элементы).
#include <stdio.h>
int main(int argc, char *argv[])
{
int N;
printf("Введите количество элементов: ");
scanf("%d",&N);
if(N<3) {printf("Мало элементов!\n"); return 0;}
printf("Введите массив: ");
double arr[N];
for(int i=0;i<N;i++) scanf("%lf",&arr[i]);
double summa = 0.0;
for(int i=1;i<N-1;i++)
if((arr[i]<arr[i-1])&&(arr[i]<arr[i+1]))
summa += arr[i];
printf("Сумма локальных минимумов: %.3lf\n",summa);
return 0;
}
Пример 2
Дан целочисленный массив размера N. Размер массива и его элементы вводятся пользователем. Упорядочить все элементы, расположенные до максимального элемента массива по возрастанию, а после максимального элемента по убыванию.
#include <stdio.h>
int main(int argc, char *argv[])
{
int N;
printf("Введите количество элементов: ");
scanf("%d",&N);
if(N<3) {printf("Слишком мало элементов!\n"); return 0;}
printf("Введите массив: ");
int arr[N];
for(int i=0;i<N;i++) scanf("%d",&arr[i]);
int pos = 0;
for(int i=1;i<N;i++)
if(arr[i]>arr[pos])
pos = i;
if(pos > 1){
int flag = 1;
while(flag){
flag = 0;
for(int i=0;i<pos-1;i++)
if(arr[i]>arr[i+1]){
int r = arr[i];
arr[i] = arr[i+1];
arr[i+1] = r;
flag = 1;
}
}
}
if(pos < N-2){
int flag = 1;
while(flag){
flag = 0;
for(int i=pos+1;i<N-1;i++)
if(arr[i]<arr[i+1]){
int r = arr[i];
arr[i] = arr[i+1];
arr[i+1] = r;
flag = 1;
}
}
}
printf("Результат: ");
for(int i=0;i<N;i++) printf("%d ",arr[i]);
printf("\n");
return 0;
}