Помогите в написании программы на языке С
В одномерном массиве, состоящем из n целых элементов, вычислить:
А) сумму отрицательных элементов;
Б) количество элементов массива, расположенных между первым
и последним четными положительными элементами;
В) поменять местами последний минимальный элемент и первый
максимальный.
C/C++
Массивы в языке Си
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
#define N 10
int A[N + 1];
int i, s, m;
srand(time(0));
for(i = 1; i <= N; i++)
{
A[i] = -5 + rand() % 11;
printf("%d ", A[i]);
}printf("\n");
/*А*/
s = 0;
for(i = 1; i <= N; i++)
if(A[i] < 0)
s += A[i];
printf("А) %d\n", s);
/*Б*/
for(i = N; i >= 1; i--)
if((A[i] > 0) && (A[i] % 2 == 0))
{
s = i;
break;
}
for(i = 1; i <= N; i++)
if((A[i] > 0) && (A[i] % 2 == 0))
{
s -= i;
break;
}
if(i <= N)
if(s >= 0)
printf("Б) %d\n", s - 1);
else
printf("Б) 0\n");
else
printf("Б) В массиве нет чётных положительных элементов. \n");
/*В*/
s = 1;
for(i = 1; i <= N; i++)
if(A[i] < A[s])
s = i;
m = N;
for(i = N; i >= 1; i--)
if(A[i] > A[m])
m = i;
i = A[s];
A[s] = A[m];
A[m] = i;
printf("В) ");
for(i = 1; i <= N; i++)
printf("%d ", A[i]);
printf("\nНажмите клавишу Enter, для продолжения...");
getchar();
return 0;
}
#include <stdlib.h>
#include <time.h>
int main()
{
#define N 10
int A[N + 1];
int i, s, m;
srand(time(0));
for(i = 1; i <= N; i++)
{
A[i] = -5 + rand() % 11;
printf("%d ", A[i]);
}printf("\n");
/*А*/
s = 0;
for(i = 1; i <= N; i++)
if(A[i] < 0)
s += A[i];
printf("А) %d\n", s);
/*Б*/
for(i = N; i >= 1; i--)
if((A[i] > 0) && (A[i] % 2 == 0))
{
s = i;
break;
}
for(i = 1; i <= N; i++)
if((A[i] > 0) && (A[i] % 2 == 0))
{
s -= i;
break;
}
if(i <= N)
if(s >= 0)
printf("Б) %d\n", s - 1);
else
printf("Б) 0\n");
else
printf("Б) В массиве нет чётных положительных элементов. \n");
/*В*/
s = 1;
for(i = 1; i <= N; i++)
if(A[i] < A[s])
s = i;
m = N;
for(i = N; i >= 1; i--)
if(A[i] > A[m])
m = i;
i = A[s];
A[s] = A[m];
A[m] = i;
printf("В) ");
for(i = 1; i <= N; i++)
printf("%d ", A[i]);
printf("\nНажмите клавишу Enter, для продолжения...");
getchar();
return 0;
}
На Javascript могу подсобить. Язык Си-подобный, так что по любому принцип одинаков
let arr = [5,-3,6,-9,12,7,12,-9,0,6,4,7,5,7];
let max = arr[0];
let min = arr[0];
let s = 0;
let f = 0;
let l = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 0 && arr[i] > 0) {
f = i;
break
}
};
for (let i = arr.length; i > 0; i--) {
if (arr[i] % 2 == 0 && arr[i] > 0) {
l = i;
break
}
};
let c = 0;
for (var i = f + 1; i < l; i++) {
c += 1
};
for (let i = 0; i < arr.length; i++) {
if (arr[i] < 0) {
s += arr[i]
}
if (arr[i] > max) {
max = arr[i]
}
if (arr[i] < min) {
min = arr[i]
}
};
let lastMin = arr.lastIndexOf(min);
let firstMax = arr.indexOf(max);
let temp = arr[lastMin];
arr[lastMin] = arr[firstMax];
arr[firstMax] = temp;
let arr = [5,-3,6,-9,12,7,12,-9,0,6,4,7,5,7];
let max = arr[0];
let min = arr[0];
let s = 0;
let f = 0;
let l = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 0 && arr[i] > 0) {
f = i;
break
}
};
for (let i = arr.length; i > 0; i--) {
if (arr[i] % 2 == 0 && arr[i] > 0) {
l = i;
break
}
};
let c = 0;
for (var i = f + 1; i < l; i++) {
c += 1
};
for (let i = 0; i < arr.length; i++) {
if (arr[i] < 0) {
s += arr[i]
}
if (arr[i] > max) {
max = arr[i]
}
if (arr[i] < min) {
min = arr[i]
}
};
let lastMin = arr.lastIndexOf(min);
let firstMax = arr.indexOf(max);
let temp = arr[lastMin];
arr[lastMin] = arr[firstMax];
arr[firstMax] = temp;
Похожие вопросы
- Одномерные массивы на языке си
- Как обработать этот массив на языке Си?
- Упорядочить элементы массива по возрастанию на языке Си
- Помогите добавить ввод чисел в массив матрицы на языке Си
- Как ввести строчный массив через scanf_s в языке Си
- Язык Си. Сортировка и поиск элементв массива
- Язык Си. Сортировка и поиск элементов массива
- Помогите исправить и дописать программу с массивами на языке C++. Буду благодарен, т. к. самому уже не понятно.
- Динамический массив и указатель Си
- Как отсортировать массив дат в СИ