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

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

Восстановить пароль Регистрация
 
kornelyk
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
18.04.2014, 09:13     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #1
В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве: пол (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++
Сортировка в бинарном файле C++
C++ В массиве хранятся сведения о количестве осадков, выпавших за каждый день июня
Дано имя файла целых чисел. Найти количество элементов, содержащихся в данном файле. Если файла с таким именем не существует, то вывести –1 C++
C++ Структура в бинарном файле
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,540
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
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
18.04.2014, 09:42  [ТС]     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #3
так max то нельзя обнулить
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,540
18.04.2014, 09:51     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #4
Почему? Это начальное значение. При чтении первой же записи оно переопределится, так как в файле кроликов с возрастом ноль по логике быть не должно.
kornelyk
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
18.04.2014, 09:54  [ТС]     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #5
ну если я пишу max=0
он ооочень ругается
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,540
18.04.2014, 09:57     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #6
Ах да, тип не посмотрел. max.vozrast = 0;
Просто нет смысла запоминать всю запись. Достаточно числа. Так как потом всё равно искать повторы.
kornelyk
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
18.04.2014, 10:06  [ТС]     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #7
так а как лучше записать?
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,540
18.04.2014, 10:14     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #8
Сделай просто int max; max = 0 и ищи максимум. Когда найдёшь, снова перечитай все записи из файла и выбирай те, у которых dat.vozrast = max, сохраняй в массив krolik k[100] или используй готовую коллекцию из тех, что есть в C++.
Когда сформируешь, ищи там по максимуму массы, а если элемент всего один, тогда просто выводи.
kornelyk
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
18.04.2014, 10:16  [ТС]     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #9
и еще вопрос!
f 15 45
m 17 44
f 22 90
m 43 15
я это записывю в файл
а он даже не читает этого
как правильно записать данные в файл?
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,540
18.04.2014, 10:23     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #10
Записываешь как? Средствами C++ или блокнотом или ещё как-то?
Бинарный файл надо записывать также как читаешь, через fopen и fwrite
kornelyk
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
18.04.2014, 10:25  [ТС]     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #11
в текстовый доумент 1.txt
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,540
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
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
18.04.2014, 10:29  [ТС]     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #13
уфф блин
и как быть?
а если без бинарного файла?
просто txt
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,540
18.04.2014, 10:38     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #14
Тогда исользуй fscanf вместо fread. Или потоки.
kornelyk
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
18.04.2014, 10:41  [ТС]     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #15
это для txt?
простите за мою тупость
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,540
18.04.2014, 10:49     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #16
fread - для бинарного файла, fscanf - для текстового.
kornelyk
 Аватар для kornelyk
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 141
18.04.2014, 10:52  [ТС]     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #17
cannot convert `krolik*' to `FILE*' for argument `1' to `int fscanf(FILE*, const char*, ...)'
ошибки одни(((
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2014, 11:02     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика
Еще ссылки по теме:

В файле data.dat хранятся фамилия и годы рождения участников. найти средний возраст участников C++
Найти UTF-16 строку в бинарном файле C++
В файле найти сведения о книгах данного автора изданных начиная с заданного года C++

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

Или воспользуйтесь поиском по форуму:
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,540
18.04.2014, 11:02     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика #18
Там совсем другой принцип передачи параметров, надо примерно так: fscanf(f, "%c %u %f", &dat.pol, &dat.vozrast, &dat.massa);
И fopen тогда c "r", а не "rb".
Yandex
Объявления
18.04.2014, 11:02     В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика
Ответ Создать тему
Опции темы

Текущее время: 16:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru