Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С (для ИВТ) / Готовые лабы С / Лаба4 / Laba 4 (2)
.c#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i;
int *arr;
int P1 = 0, P2 = 0, N1 = 0, N2 = 0;
int countP = 0, countN = 0;
printf("Enter array size: ");
scanf("%d", &n);
// Динамическое выделение памяти
arr = (int*)malloc(n * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
printf("Enter %d elements:\n", n);
for (i = 0; i < n; i++) {
printf("arr[%d] = ", i);
scanf("%d", &arr[i]);
// Поиск первых двух положительных и отрицательных через индексацию
if (arr[i] > 0) {
if (countP == 0) P1 = arr[i];
else if (countP == 1) P2 = arr[i];
countP++;
}
else if (arr[i] < 0) {
if (countN == 0) N1 = arr[i];
else if (countN == 1) N2 = arr[i];
countN++;
}
}
// Проверка корректности данных
if (countP < 2 || countN < 2) {
printf("Error: array must contain at least 2 positive and 2 negative elements\n");
free(arr);
return 1;
}
double Z = (double)(P1 - P2) / (N1 + N2);
printf("\nP1 = %d, P2 = %d, N1 = %d, N2 = %d\n", P1, P2, N1, N2);
printf("Z = (P1 - P2) / (N1 + N2) = (%d - %d) / (%d + %d) = %.4f\n",
P1, P2, N1, N2, Z);
// Через указатели
countP = 0; countN = 0;
P1 = P2 = N1 = N2 = 0;
int *p = arr;
for (i = 0; i < n; i++) {
if (*p > 0) {
if (countP == 0) P1 = *p;
else if (countP == 1) P2 = *p;
countP++;
}
else if (*p < 0) {
if (countN == 0) N1 = *p;
else if (countN == 1) N2 = *p;
countN++;
}
p++;
}
Z = (double)(P1 - P2) / (N1 + N2);
printf("\nVia pointers:\n");
printf("Z = (P1 - P2) / (N1 + N2) = (%d - %d) / (%d + %d) = %.4f\n",
P1, P2, N1, N2, Z);
free(arr);
return 0;
}
Соседние файлы в папке Лаба4
