@granmaster

Как считать из файла двоичные числа и перевести их в десятичные?

Задали написать программу на языке Си, информации на лекциях по этим темам конечно же не было и задали это в виде проекта который надо вскоре сдать. Решите проблему, которая обнаруживает 2 наименьших (минимальных) и 2 наибольших (максимальных) элемента из одномерного массива из десяти чисел, введенных в двоичном коде (макс. 8 бит), который программа считывает из файла. Все числа записываются на экран вместе с их транскрипцией в десятичную систему, включая мины и максимумы.
  • Вопрос задан
  • 315 просмотров
Пригласить эксперта
Ответы на вопрос 3
@res2001
Developer, ex-admin
В простейшем случае примерно так же как и с текстовым файлом.
Кроме того что:
1. Окрывать файл нужно в двоичном режиме (по умолчанию в текстовом)
2. Читать нужно сразу в массив соответствующего типа и размерности (подразумевается, что вы знаете какой тип двоичных данных в файле, а иначе нет смысла его читать). Читать по одному элементу то же не возбраняется.

Если файл записан на машине с одной и той же архитектурой, то при таком подходе проблем не будет.
Если же архитектуры (процессоры) разные, то может вмешаться порядок байт (big/little endian). Это нужно учитывать.
Так же, если вы читаете файл в котором записаны данные разных типов (например какая-то структура), то может возникнуть проблема с выравниванием полей в структуре. https://stackoverflow.com/questions/4306186/struct...
Думаю, что к вашей текущей задаче эти нюансы не относятся. Но знать, что двоичная чтение/запись это несколько сложнее аналогичных операций с текстом стоит.
Ответ написан
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
- Открыть файл в двоичном режиме (это важно! иначе все поломается!), выделить под него память, считать файл, закрыть
- наложить на него указатель на массив коротких целых
- перебрать массив, найти минимумы, максимумы, это простейшие вещи, их полно в тырнете
- вывести на экран

Ничего сложного от слова совсем. На коленке пишется.
Ответ написан
Комментировать
myjcom
@myjcom
Вот две (четыре) функции и немного примеров, если не получится, покажешь свой код и тут скорее всего помогут.
https://en.cppreference.com/w/c/io/fopen
https://en.cppreference.com/w/c/io/fscanf
https://en.cppreference.com/w/c/string/byte/strtol
https://en.cppreference.com/w/c/io/fprintf

А так это даже больше не вопрос, а просьба сделать за тебя. Тут так не принято.

Можешь решить в лоб, учитывая что всего 10 элементов. Сортировка и два справа, два слева.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы