Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
#1

В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика - C++

18.04.2014, 09:13. Просмотров 373. Ответов 17
Метки нет (Все метки)

В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве: пол (m/f), возраст (в мес.), масса. Найти наиболее старого кролика. Если таких несколько, то вывести информацию о том из них, масса которого больше. осталось только правильно прочитать из файла данные
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <fstream>
#include <cstdlib> 
using namespace std;
struct krolik {char pol; int vozrast; double massa;}; 
int main()
 {
 FILE *f; krolik dat, max; int n;
 cout << "File name? ";
 char s[20];
 cin.getline(s, 20);
 f=fopen(s, "rb");
 fread(&dat, sizeof(krolik), 1, f);
max=dat;
  while (fread(&dat, sizeof(krolik),
   1, f))
   {if (dat.vozrast>max.vozrast) 
   max=dat;     else if 
(dat.vozrast==max.vozrast&&dat.
 massa>max.massa) max=dat;}
 cout << "The oldest rabbit has a sex " << max.pol << ", age " << max.vozrast << " and mass " << max.massa << endl;
    system("PAUSE");
    return EXIT_SUCCESS;  
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2014, 09:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика (C++):

Найти k-ую строчку в бинарном файле - C++
День добрый! Подскажите, как реализовать данный алгоритм, значение К вводится с клавиатуры, нам задан двумерный массив. Нужно в двумерном...

Найти UTF-16 строку в бинарном файле - C++
Здравствуйте, Есть вот такая процедура для поиска и замены строк в бинарном файле. Применяю ее на обычном PE-файле. Проблема в том,...

Найти и вывести на экран продукты одной фирмы в бинарном файле - C++
Вот функция записи void dobavit() {ofstream fot(&quot;database.txt&quot;,ios_base::binary | ios_base::app); int gt; for(int i=0;i&lt;1000;i++) ...

В заданном бинарном файле, содержащем целые числа, найти произведение положительных чисел - C++
Помогите,пожалуйста,с заданием,учусь на психолога,а нам вот поставили информатику,в которой я ничего не понимаю :(

Найти в бинарном файле все пары точек, лежащих с точкой d на одной прямой - C++
В файле заданы множество точек А и точка d вне его. Найти все пары точек, лежащих с точкой d на одной прямой. с++ срочно!!!

В данном бинарном файле, компоненты которого являются действительными числами, найти min и max - C++
Подскажите пожалуйста! Есть вот такое задание: В данном бинарном файле, компоненты которого являются действительными числами, выделить...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nmcf
5310 / 4630 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
18.04.2014, 09:31 #2
Для чтения записей файла (после fopen):
C++
1
2
3
4
5
max = 0;
  while (fread(&dat, sizeof(krolik),1, f) = sizeof(krolik))
  {
 
  }
Добавлено через 4 минуты
Находишь максимум и после этого снова просматриваешь файл и выбираешь всех с таким возрастом, например, в массив из элементов krolik k[100]. Если находится больше 1 кролика, то находишь в массиве того, у которого масса больше.
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
18.04.2014, 09:42  [ТС] #3
так max то нельзя обнулить
nmcf
5310 / 4630 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
18.04.2014, 09:51 #4
Почему? Это начальное значение. При чтении первой же записи оно переопределится, так как в файле кроликов с возрастом ноль по логике быть не должно.
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
18.04.2014, 09:54  [ТС] #5
ну если я пишу max=0
он ооочень ругается
nmcf
5310 / 4630 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
18.04.2014, 09:57 #6
Ах да, тип не посмотрел. max.vozrast = 0;
Просто нет смысла запоминать всю запись. Достаточно числа. Так как потом всё равно искать повторы.
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
18.04.2014, 10:06  [ТС] #7
так а как лучше записать?
nmcf
5310 / 4630 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
18.04.2014, 10:14 #8
Сделай просто int max; max = 0 и ищи максимум. Когда найдёшь, снова перечитай все записи из файла и выбирай те, у которых dat.vozrast = max, сохраняй в массив krolik k[100] или используй готовую коллекцию из тех, что есть в C++.
Когда сформируешь, ищи там по максимуму массы, а если элемент всего один, тогда просто выводи.
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
18.04.2014, 10:16  [ТС] #9
и еще вопрос!
f 15 45
m 17 44
f 22 90
m 43 15
я это записывю в файл
а он даже не читает этого
как правильно записать данные в файл?
nmcf
5310 / 4630 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
18.04.2014, 10:23 #10
Записываешь как? Средствами C++ или блокнотом или ещё как-то?
Бинарный файл надо записывать также как читаешь, через fopen и fwrite
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
18.04.2014, 10:25  [ТС] #11
в текстовый доумент 1.txt
nmcf
5310 / 4630 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
18.04.2014, 10:27 #12
Так не получится. Если работаешь с бинарным файлом, то txt не пойдёт. Надо примерно так (где равно поставить значения):
C++
1
2
3
4
5
6
7
8
9
10
FILE *f; krolik dat;
 cout << "File name? ";
 char s[20];
 cin.getline(s, 20);
 f=fopen(s, "wb");
dat.pol = 
dat.vozrast =
dat.massa =
 fright(&dat, sizeof(krolik), 1, f);
fclose(f);
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
18.04.2014, 10:29  [ТС] #13
уфф блин
и как быть?
а если без бинарного файла?
просто txt
nmcf
5310 / 4630 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
18.04.2014, 10:38 #14
Тогда исользуй fscanf вместо fread. Или потоки.
kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 145
18.04.2014, 10:41  [ТС] #15
это для txt?
простите за мою тупость
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2014, 10:41
Привет! Вот еще темы с ответами:

В файле хранятся сведения об архитектурных памятниках. Найти самый старый архитектурный памятник - C (СИ)
В файле хранятся сведения об архитектурных памятниках: название, местоположение, тип постройки, архитектор, год постройки. Вывести сведения...

В файле данных хранятся следующие сведения о сотрудниках: - Visual Basic
В файле данных хранятся следующие сведения о сотрудниках: &lt;фамилия&gt;, &lt;имя&gt;, &lt;отчество&gt;, &lt;год поступления на работу&gt;, &lt;домашний адрес&gt;,...

Пусть в файле хранятся сведения о студентах некоторой группы(файлы) - Delphi
Пусть в файле хранятся сведения о студентах некоторой группы в виде записей след-ей структуры: анкетные данные(ФИО) и 10 оценок за...

В файле данных хранятся сведения о товарах продовольственной базы. Организовать работу с файлом - Visual Basic
В файле данных хранятся сведения о товарах продовольственной базы в формате: &lt;наименование товара &gt;, &lt;цена за единицу&gt;, &lt;количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.04.2014, 10:41
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru