From 3f9a7eb97697d2dfcf3be4f68ebfcf5822ef4f04 Mon Sep 17 00:00:00 2001 From: "v.ignatkin" Date: Tue, 19 Nov 2024 09:24:07 +0400 Subject: [PATCH] Second Third --- lab20/lab20/FileName.cpp | 275 ++++++++------------------------------- 1 file changed, 52 insertions(+), 223 deletions(-) diff --git a/lab20/lab20/FileName.cpp b/lab20/lab20/FileName.cpp index 7edfc1a..59eabf0 100644 --- a/lab20/lab20/FileName.cpp +++ b/lab20/lab20/FileName.cpp @@ -1,240 +1,69 @@ #define _CRT_SECURE_NO_WARNINGS - #include -#include - -struct Node { - int data; - struct Node* next; -}; +#include -struct Node* first = NULL; +int* pa; //Указатель на начальный элемент массива. +int n; // Реальное количество элементов в массиве -void printList() { - struct Node* ptr = first; - while (ptr != NULL) { - printf("(%d) -> ", ptr->data); - ptr = ptr->next; +void Load() { + // Открытие входного файла + FILE* fin = fopen("c:\\Temp\\Lection14\\in3.txt", "rt"); + if (fin == NULL) { + printf("Входной файл не найден\n"); + return; } - printf("NULL\n"); -} -void addToHead(int value) { - struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); + // Загрузка массива из входного файла + fscanf(fin, "%d", &n); + // Выделение памяти под динамический массив + pa = (int*)malloc(sizeof(int) * n); - newNode->next = first; - newNode->data = value; + for (int i = 0; i < n; i++) { + fscanf(fin, "%d", &pa[i]); + } + // Закрытие входного файла + fclose(fin); +} +void SaveResult() { + // Вычисление среднего арифметического + float sa = 0; + float s = 0; + for (int i = 0; i < n; i++) { + s += pa[i]; + } + sa = s / n; - first = newNode; -} -int deleteFromHead() { - int value = first->data; - struct Node* delNode = first; - first = first->next; - free(delNode); - return value; -} -int contains(int value) { - struct Node* ptr = first; - while (ptr != NULL) { - if (ptr->data == value) { - return 1; + // Выяснение, сколько элементов меньше ср арифметического и больше 0 + int m = 0; + for (int i = 0; i < n; i++) { + if (pa[i] < sa and pa[i] > 0) { + m++; } - ptr = ptr->next; } - return 0; -} -void clearList() { - while (first != NULL) - { - struct Node* delNode = first; - first = first->next; - free(delNode); + // Открытие выходного файла + FILE* fout = fopen("c:\\Temp\\Lection14\\out3.txt", "wt"); + if (fout == NULL) { + printf("Выходной файл не найден\n"); + return; } -} -int sum() { - struct Node* ptr = first; - int s = 0; - while (ptr != NULL) { - s += ptr->data; - ptr = ptr->next; - } - return s; -} -int evenCount() { - struct Node* ptr = first; - int s = 0; - while (ptr != NULL) { - if (ptr->data % 2 == 0) { - s++; + + // Сохранение элементов ниже ср арифметического и больше 0 + fprintf(fout, "%d\n", m); + for (int i = 0; i < n; i++) { + if (pa[i] < sa and pa[i] > 0) { + fprintf(fout, "%d ", pa[i]); } - ptr = ptr->next; - } - return s; -} -int oddsX10() { - struct Node* ptr = first; - int s = 0; - while (ptr != NULL) { - if (ptr->data % 2 != 0) { - ptr->data = ptr->data * 10; - } - ptr = ptr->next; - } - return s; -} -void elementIx100(int i) { - struct Node* ptr = first; - int Index = 0; - while (ptr != NULL) { - if (Index == i) { - ptr->data = ptr->data * 100; - return; - } - ptr = ptr->next; - Index++; - } -} -void elementLeftIx10(int i) { - struct Node* ptr = first; - int Index = 0; - while (ptr != NULL and Index < i) { - if (Index >= 0) { - ptr->data *= 10; - } - ptr = ptr->next; - Index++; } + // Закрытие файла + fclose(fout); } void main() { - printf("\nTask 1!\n"); - first = NULL; - printList(); + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + printf("Hello! It is Task3!\n"); - addToHead(400); - addToHead(300); - addToHead(200); - addToHead(100); - printList(); - - int x1 = deleteFromHead(); - printf("x1 = %d\n", x1); - printList(); - - - printf("contains(100) = %d\n", contains(100)); - printf("contains(150) = %d\n", contains(150)); - printf("contains(200) = %d\n", contains(200)); - - clearList(); - printList(); - - printf("contains(100) = %d\n", contains(100)); - printf("contains(150) = %d\n", contains(150)); - printf("contains(200) = %d\n", contains(200)); - - printf("\nTask 2!\n"); - printList(); - - addToHead(1); - addToHead(3); - addToHead(6); - addToHead(9); - printList(); - - printf("sum = %d\n", sum()); - - clearList(); - printList(); - printf("sum = %d\n", sum()); - { - int x; - scanf_s("%d", &x); - } - - printf("\nTask 3!\n"); - printList(); - - addToHead(1); - addToHead(3); - addToHead(6); - addToHead(8); - printList(); - - printf("even numbers = %d\n", evenCount()); - - clearList(); - printList(); - printf("even numbers = %d\n", evenCount()); - { - int x; - scanf_s("%d", &x); - } - - printf("\nTask 4!\n"); - printList(); - - addToHead(1); - addToHead(3); - addToHead(6); - addToHead(8); - printList(); - - oddsX10(); - printList(); - - clearList(); - { - int x; - scanf("%d", &x); - } - - printf("\nTask 5!\n"); - printList(); - - addToHead(1); - addToHead(3); - addToHead(6); - addToHead(8); - printList(); - - elementIx100(0); - printList(); - - elementIx100(2); - printList(); - - elementIx100(0); - printList(); - - clearList(); - { - int x; - scanf("d", &x); - } - - printf("\nTask 6!\n"); - printList(); - - addToHead(1); - addToHead(3); - addToHead(6); - addToHead(8); - printList(); - - elementLeftIx10(1); - printList(); - - elementLeftIx10(2); - printList(); - - elementLeftIx10(4); - printList(); - - clearList(); - { - int x; - scanf("%d", &x); - } -} + Load(); + SaveResult(); + free(pa); +} \ No newline at end of file