Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
2.2 Кб
Скачать
#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