Определить количество отрицательных элементов, расположенных на четных позициях - C (СИ)
Формулировка задачи:
Написал программу, теперь как сделать эту же программу с помощью указателей?
Дан массив А(50). Определить количество отрицательных элементов, расположенных на четных позициях, и сумму положительных элементов, расположенных на нечетных позициях.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<locale.h>
#include<conio.h>
#define n 50
void main()
{
int i,sum1;
int massiv[n];
int kolvo=0;
int summa=0;
clrscr();
printf("Ishodnyi massiv:\n");
for(i=0;i<n;i++)
scanf("%d",&massiv[i]);
for(i=0;i<n;i++)
printf("%d\t ",massiv[i]);
for(i=1; i<n; i+=2)
{
if(massiv[i]<0)
kolvo++;
}
printf("\n kolichestvo otricatelnyh elementov na chetnyh poziciyah: %d", kolvo);
for(i=0;i<n;i+=2)
{
if(massiv[i]>0)
sum1=massiv[i];
summa+=sum1;
}
printf("\n summa polojitelnyh elementov, raspolojennyh na nechetnyh poziciyah: %d",summa);
getch();
}Решение задачи: «Определить количество отрицательных элементов, расположенных на четных позициях»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <memory.h>
#define N 50
int main(int argc, char* argv[])
{
int* A = new int[N];
memset((void*)A, 0x00, sizeof(int) * N);
for (int t = 0; t < N; t++)
{
*(A+t) = rand() % (2 * N) - N;
printf("%d ",*(A+t));
}
int s1 = 0, s2 = 0;
for (int i = 0; i < N; i++)
if (*(A+i) < 0 && (i % 2) == 0) s1+=*(A+i);
else if (*(A+i) > 0 && (i % 2) > 0) s2+=*(A+i);
printf("\n\nsum1 = %d sum2 = %d\n",s1,s2);
_getch();
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Создается массив целых чисел A динамически с помощью оператора new.
- С помощью функции memset массив A инициализируется нулями.
- В цикле for случайным образом заполняется массив A числами от -N до N.
- В двух отдельных циклах for подсчитываются суммы элементов массива A, удовлетворяющих определенным условиям:
- в первом цикле суммируются отрицательные четные числа,
- во втором цикле суммируются положительные нечетные числа.
- Выводятся суммы s1 и s2.
- Программа ожидает нажатия клавиши с помощью функции _getch.
- Программа завершается возвратом значения 0.