• Предмет: Информатика
  • Автор: Pro100Cheliks
  • Вопрос задан 3 месяца назад

Нужно написать программу на языке СИ

Приложения:

Ответы

Ответ дал: PROTECHPRO
0

Ответ:

Вот пример программы на языке C, которая считывает последовательность семеричных чисел из файла `in.txt`, переводит их в десятичную систему счисления и записывает наибольшее число в файл `out.txt`:

```c

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

// Функция для перевода числа из семеричной системы в десятичную

int convertToDecimal(char *sevenNumber) {

   int decimalNumber = 0;

   int length = 0;

   // Находим длину строки

   while (sevenNumber[length] != '\0') {

       length++;

   }

   // Переводим из семеричной в десятичную

   for (int i = 0; i < length; i++) {

       decimalNumber += (sevenNumber[i] - '0') * pow(7, length - i - 1);

   }

   return decimalNumber;

}

// Функция для нахождения максимального числа из массива

int findMax(int *numbers, int size) {

   int max = numbers[0];

   for (int i = 1; i < size; i++) {

       if (numbers[i] > max) {

           max = numbers[i];

       }

   }

   return max;

}

int main() {

   FILE *inputFile, *outputFile;

   inputFile = fopen("in.txt", "r");

   outputFile = fopen("out.txt", "w");

   if (inputFile == NULL || outputFile == NULL) {

       perror("Ошибка открытия файла");

       return EXIT_FAILURE;

   }

   char sevenNumber[10]; // Максимальная длина семеричного числа

   int decimalNumbers[1000]; // Массив для хранения десятичных чисел

   int index = 0;

   // Считываем числа из файла

   while (fscanf(inputFile, "%s", sevenNumber) != EOF) {

       // Переводим семеричное число в десятичное и добавляем в массив

       decimalNumbers[index] = convertToDecimal(sevenNumber);

       index++;

   }

   // Находим максимальное число

   int maxDecimal = findMax(decimalNumbers, index);

   // Выводим результат в файл

   fprintf(outputFile, "%d\n", maxDecimal);

   // Закрываем файлы

   fclose(inputFile);

   fclose(outputFile);

   return 0;

}

```

Примечание:

1. В данной программе предполагается, что каждое семеричное число разделено пробелом и после последнего числа стоит точка.

2. Размер массива `decimalNumbers` выбран произвольно (1000). В реальной программе лучше использовать динамическое выделение памяти или другие методы обработки массивов переменной длины в зависимости от требований задачи.

Объяснение:

Вас заинтересует