IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> структуры и функции, C++
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

Репутация: -  0  +


по идее программа должна иметь две ф-ии: чтение из файла данных для структуры и запись в файл структуры в конец файла.и выполнять следующе:запись в файл информации только о тех ноутбуках ,тактовая частота которых больше 120 МГц,+их нужно отсортировать в порядке возрастания цены.

то,что у меня получилось к сожалению не работает...
может посмотрите и исправите какие-то ошибки?
заранее благодарна..
#include <iostream.h>
#include <fstream.h>

typedef struct tagT
{
int disp_res_x; //разрешающая способность дисплея по горизонтали
int disp_res_y; //по вертикали

int f; //тактовая частота
float d; //размер диагонали дисплея
float hdd; //объем жесткого диска
char mode [20]; //наименование
float price; //цена
}T;

void f_read(T notebook[20])
{
ifstream fin ("file.txt");
if (!fin)
{
cout << "File file.txt don't found." << endl;
return 1;
};
int n;
fin >> n;
for (int i=0;i<n;i++)
{
fin >> notebook[i].mode >> notebook[i].hdd >> notebook[i].f >> notebook[i].d >>
notebook[i].disp_res_x >> notebook[i].disp_res_y >> notebook[i].price;
};
return;
};

void f_write(T notebook[20],int i)
{
ifstream fout ("file.txt");
if (!fout)
{
cout << "File can't open for writing." << endl;
return 1;
};
int n;
fin >> n;
fout << notebook[i].mode << notebook[i].hdd << notebook[i].f << notebook[i].d <<
notebook[i].disp_res_x << notebook[i].disp_res_y << notebook[i].price << endl;
return;
};
int main()
{
T notebook[20];

f_read(notebook[20]);
int n;
fin >> n;

T buf;
for (int i=0;i<n;i++)
for (int j=n-1;j>=i+1;j--)
{
if (notebook[j-1].price > notebook[j].price)
{
memmove (&buf, &notebook[j-1], sizeof(T));
memmove (&notebook[j-1],&notebook[j], sizeof(T));
memmove (&notebook[j], &buf, sizeof(T));
};
};

for (int i=0;i<n;i++)
{
if (notebook[i].f>120) f_write(notebook[20],i);
};
}



--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
я ввожу кол-во записей,затем по порядку все поля записи.
затем всё это по идее должно писаться в бинарный файл.
Если бы ты не стала переделывать то, что было приведено в посте №12 (я о функции
iostream& write(iostream &io, const TNotebook &note)
), оно даже и записывалось бы в файл... А так - у тебя ничего не пишется, файл note.bin остается пустым...

Второе: ДАЖЕ если ты запишешь в файл всю информацию, введенную в начале, что должно происходить потом? Сортировка, хорошо... Дальше? Запись данных, удовлетворяющих определенному критерию, в тот же файл? А что с ПРЕЖНИМИ данными? Новые же будут добавляться, так реализована функция write...

Выходов 2... Или после сортировки стереть все, что было из файла note.bin, и потом записывать только то, что удовлетворяет критерию, или работать с 2-мя файлами: в одном - полная информация, во втором отфильтрованная...

Учти также, что при последовательных запусках программы содержимое твоего файла будет накапливаться (из него ничего нигде не удаляется), так что нужно либо при старте программы спрашивать, что делать (удалять старую информацию/не удалять), либо делать что-то другое, но не оставлять это просто так...

Сообщение отредактировано: Алена -
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Tribunal   структуры и функции   23.10.2006 13:10
volvo   Тебе здесь (это С++ программа) лучше всего сделать…   23.10.2006 17:52
Tribunal   честно говоря не знаю что за "operator=…   23.10.2006 17:59
volvo   Смотри... Ты переопределяешь для класса оператор п…   23.10.2006 19:39
Tribunal   в принципе...я могу с этим разобраться...видимо эт…   23.10.2006 19:46
volvo   Ну, нельзя классы, так поменяй class на struct - б…   23.10.2006 19:54
Tribunal   ок... нет,ну всё равно ... что не так с моей прогр…   23.10.2006 19:59
volvo   Если конкретно - то я тебе уже сказал: 1. Ты не …   23.10.2006 20:11
Tribunal   теперь программа даже запускается) так вот...а фай…   23.10.2006 20:50
volvo   Ну, запускается -то оно запускается, только вот ЧТ…   24.10.2006 0:37
Tribunal   в общем я решила всё же сделать вот так... а как …   30.10.2006 14:06
volvo   "Меня терзают смутные сомнения..." (С) Я…   30.10.2006 20:05
Tribunal   воспользовалась вашими функциями.вроде довольно ус…   4.11.2006 14:44
Tribunal   помогите.. :unsure: не могу найти ошибку...=(   7.11.2006 21:34
Tribunal   я вот попробовала написать ф-ии вот так,но заступо…   10.11.2006 22:02
Алена   Потому, что перед чтением из файла: while (re…   12.11.2006 2:06
Tribunal   спасибо,конечно, но мне это к сожалению не помогло…   12.11.2006 14:35
Алена   Присоедини сюда окончательный вариант программы, с…   12.11.2006 14:50
Tribunal   я ввожу кол-во записей,затем по порядку все поля з…   12.11.2006 15:00
Алена   Если бы ты не стала переделывать то, что было прив…   12.11.2006 16:06
Tribunal   получается нужна полная функция...хорошо,так и сде…   12.11.2006 16:16
Алена   Вот так: bin.close(); bin.open("note.…   12.11.2006 16:40
Tribunal   решила я всё-таки не стирать ничего из файла. а пр…   12.11.2006 17:09
Алена   Да что же тебя так тянет КАЖДЫЙ РАЗ менять что-то …   12.11.2006 17:38
Tribunal   огромное спасибо за уделённое время и помощь! …   12.11.2006 17:50


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2024 16:07
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name