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

> Внимание!

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

> структуры и функции, C++
Tribunal
сообщение 23.10.2006 9:10
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Алена
сообщение 12.11.2006 12:06
Сообщение #2


Гость






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

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

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

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

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

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


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

 



- Текстовая версия 22.07.2025 13:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"