Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
123c
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 46
1

Удалить из файла все элементы, у которых стоимость превышает заданную

21.12.2015, 15:48. Просмотров 879. Ответов 7
Метки нет (Все метки)

Удалить все элементы, у которых стоимость (cost) превышает заданную.

Как это сделать, подскажите пожалуйста.


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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
 
struct film
{
char name[20];
char director[30];
int year;
float cost;
};
 
void main ()
{
clrscr ();
film p;
FILE *f;
f=fopen("D:\\f5.txt","w");
if (f==NULL)
{
cout << "\n Cannot open the file for writing";
exit(1);
}
int n;
printf("\n N-?");
scanf("%d",&n);
for (int i=0; i<n; i++)
{
printf("\n Name: ");
scanf("%s",&p.name);
printf("\n Director: ");
scanf("%s",&p.director);
printf("\n Year: ");
scanf("%d",&p.year);
printf("\n Cost: ");
scanf("%f",&p.cost);
 
fwrite(&p,sizeof(film),1,f);
}
 
fclose(f);
f=fopen("D:\\f5.txt","r");
if (f==NULL)
{
cout << "\n Cannot open the file for reading";
exit(2);
}
while(fread(&p,sizeof(film),1,f))
{
printf("\n%s %s %d %f",p.name,p.director,p.year,p.cost);
}
fclose(f);
getch ();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2015, 15:48
Ответы с готовыми решениями:

Вывести список игрушек, стоимость которых не превышает заданную
В магазине содержатся сведения об ассортименте игрушек. Структура записи: −...

Вывести список товаров хранящихся больше месяца стоимость которых превышает заданную
Список товаров, имеющихся на складе, включает в себя наименование товара,...

Найти сумму элементов массива, удалить из него все элементы, модуль которых не превышает 1
Помогите, пожалуйста 1. Найти сумму элементов массива с нечетными номерами....

Сжать массив, удалив из него все элементы модуль которых не превышает 1. Заполнить эти элементы нулями
Во время перестановки, когда первый 0 достигает конца массива, выскакивает...

В начале массива расположить все элементы, модуль которых не превышает 1, а после них - все остальные
Ребят, помогите, пожалуйста! Нужно написать программу в С++ для решения задачи:...

7
zss
Модератор
Эксперт С++
7257 / 6703 / 4243
Регистрация: 18.12.2011
Сообщений: 17,692
Завершенные тесты: 1
21.12.2015, 15:54 2
Лучший ответ Сообщение было отмечено 123c как решение

Решение

1.Как раз 38 строчка пустая, напишите там
C++
1
if(p.cost<=costmax)
costmax - заданная максимальная стоимость.

2.
Цитата Сообщение от 123c Посмотреть сообщение
#include <iostream.h>
Цитата Сообщение от 123c Посмотреть сообщение
#include <stdlib.h>
Объясните, зачем Вы это написали?

3. Не вижу, почему Ваш вопрос в разделе С++, а не Си.
1
123c
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 46
21.12.2015, 16:13  [ТС] 3
Цитата Сообщение от zss Посмотреть сообщение
2.
Сообщение от 123c
#include <iostream.h>
Сообщение от 123c
#include <stdlib.h>
Объясните, зачем Вы это написали?
3. Не вижу, почему Ваш вопрос в разделе С++, а не Си.
Я учусь в университете и написала это по примеру преподавателя.
Я ошиблась, что не в том разделе написала.

Добавлено через 12 минут
Цитата Сообщение от zss Посмотреть сообщение
.Как раз 38 строчка пустая, напишите там
C++Выделить код
1
if(p.cost<=costmax)
costmax - заданная максимальная стоимость.
Я написала там, но оно ничего не дало, может его нужно на 41 строчке написать?
0
zss
Модератор
Эксперт С++
7257 / 6703 / 4243
Регистрация: 18.12.2011
Сообщений: 17,692
Завершенные тесты: 1
21.12.2015, 16:22 4
Лучший ответ Сообщение было отмечено 123c как решение

Решение

перед fwrite - чтобы запись была только в том случае, когда цена меньше заданной.
1
123c
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 46
21.12.2015, 16:29  [ТС] 5
Цитата Сообщение от zss Посмотреть сообщение
перед fwrite - чтобы запись была только в том случае, когда цена меньше заданной.
я же цену ввожу с клавиатуры, ввела меньше заданной и оно мне ничего не удалило
0
zss
Модератор
Эксперт С++
7257 / 6703 / 4243
Регистрация: 18.12.2011
Сообщений: 17,692
Завершенные тесты: 1
21.12.2015, 17:18 6
Лучший ответ Сообщение было отмечено 123c как решение

Решение

Не может такого быть
C++
1
2
if(p.cost<=costmax) // проверяем, что цена не больше заданной
   fwrite(&p,sizeof(film),1,f); // пишем только, если условие верное
Т.е. в файле не окажется ни одной записи с ценой больше заданной
1
123c
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 46
21.12.2015, 17:54  [ТС] 7
Цитата Сообщение от zss Посмотреть сообщение
Не может такого быть
Спасибо огромное, всё получилось (я просто писала цену не больше, а меньше заданной)

Добавлено через 9 минут
Цитата Сообщение от zss Посмотреть сообщение
Не может такого быть
А Вы ещё не знаете случайно, как к этому всему "Добавить K элементов в начало файла"?
0
zss
Модератор
Эксперт С++
7257 / 6703 / 4243
Регистрация: 18.12.2011
Сообщений: 17,692
Завершенные тесты: 1
21.12.2015, 18:31 8
Создать новый файл, записать в него К элементов, в хвост переписать старый файл.
Если надо, старый удалить, а новый переименовать.
1
21.12.2015, 18:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2015, 18:31

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом все остальные
привет всем) никак не могу придумать влгоритм для куска задачи:...

Сжать массив, удалив из него все элементы, модуль которых не превышает 1
В одномерном массиве, состоящем из п вещественных элементов, вычислить: Сжать...

Сжать массив, удалив из него все элементы, модуль которых не превышает 1.
В одномерном массиве, состоящем из 20 вещественных элементов, вычислить: 1)...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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