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

> Внимание!

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

> Записи, файл, С/C++
Merlin
сообщение 16.05.2006 16:56
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 114
Пол: Мужской
Реальное имя: Ден

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


Условие :

Создать типизированный файл, запись которого имеет следующую структуру: номер УДК, фамилию и инициалы автора, название книги, год издания, количество экземпляров данной книги в библиотеке. Вывести на экран в алфавитном порядке название книг, количество экземпляров которых больше 3.
Создание и обработку файла оформить в виде подпрограмм.

Помогите переделать эту задачу в ( С/С++) mega_chok.gif

Вот код Паскаля :
uses crt;
const n=2;
type knigi=record
fio,name:string[20];
udk:real;
date,kol:integer;
end;
var f:file of knigi;
a:array [1..n] of knigi;
s:string;
i,vybor:integer;
{Создание}
procedure new;
Begin
rewrite(f);
for i:=1 to n do
begin
clrscr;
write('Введите номер Удк');
readln(a[i].udk);
write('Введите Фио ');
readln(a[i].fio);
write('Введите название книги ');
readln(a[i].name);
write('Введите год издания ');
readln(a[i].date);
write('Введите кол-во экземпляров ');
readln(a[i].kol);
write(f,a[i]);
end;
close(f);
End;
{Чтение}
procedure open;
Begin
reset(f);
for i:=1 to n do read(f,a[i]);
close(f);
End;
{Вывод на экран}
procedure print;
var j:integer;
buf:knigi;
Begin
clrscr;
for i:=1 to n-1 do
for j:=i+1 to n do if a[i].name>a[j].name then
begin
buf:=a[i];
a[i]:=a[j];
a[j]:=buf;
end;
writeln(' УДК ФИО Название Дата Кол-во');
for i:=1 to n do if a[i].kol > 3 then
writeln(a[i].udk:5:0,' ',a[i].fio:20,' ',a[i].name:20,' ',a[i].date:5,' ',a[i].kol);
End;
BEGIN
clrscr;
write('1 -Создать, 0 - Открыть ');
readln(vybor);
write(' Полный путь к файлу');
readln(s);
assign(f,s);
if vybor=1 then new;
if vybor=0 then open;
print;
readln;
END.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 18.05.2006 23:02
Сообщение #2


Гость






Так лучше?
#include <stdio.h>
#include <conio.h>
#include <string.h>

#define SIZE 100

int col;
FILE * file;

typedef struct {

char Name[SIZE];
char fio[SIZE];
int god,udk,kol;

} One;

One Knigi[50];

void readln(char *s, int size) {
int c;
while ((c = getchar()) != '\n' && size-- > 0) *s++ = c;
*s = 0;
}

int sort_function(const void *a, const void *b) {

return( strcmp(((One *)a) -> Name,((One *)b) -> Name) );

}

void Out() {
int i;

qsort((void *)Knigi, col, sizeof(Knigi[0]), sort_function);

for(i = 0; i < col; ++i)
if(Knigi[i].kol > 3) {
fprintf(file,
"%s\n%s\n%d\n%d\n%d\n",
Knigi[i].Name, Knigi[i].fio,
Knigi[i].udk, Knigi[i].kol, Knigi[i].god);
}
}

void main() {
int i;
file = fopen("Out.txt", "w");

clrscr();
printf("\n\n Vvedite kolichestvo sotrudnikov v faile ");
scanf("%u", &col);
for(i=0;i<col;i++)
{
printf("\n Name ");
readln( Knigi[i].Name,SIZE);
printf("\n Fio ");
readln( Knigi[i].fio, SIZE);
printf("\n Udk");
scanf("%i",&Knigi[i].udk);
printf("\n Kolichestvo");
scanf("%i",&Knigi[i].kol);
printf("\n God");
scanf("%i",&Knigi[i].god);

}
Out();
getche();
fclose(file);
}


Только подправь процедуру readln, она не дает вводить "имя", сразу перескакивает на "фамилию"... А сортируется все с использованием стандартной функции qsort - не нужно изобретать велосипед...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Merlin   Записи, файл   16.05.2006 16:56
volvo   У тебя проблемы... В С++ нет типизированных файлов...   16.05.2006 17:04
Merlin   Я знаю, что нет в С++ типизир. файлов, это задание...   16.05.2006 17:11
Merlin   #include <fstream.h> struct book { book(...   17.05.2006 22:49
volvo   А что, память под char * уже выделять не надо? #in...   17.05.2006 23:02
Merlin   #include <string.h> #include <fstream.h...   17.05.2006 23:08
volvo   Это я забыл исправить... Не объявлен у тебя p_nam...   17.05.2006 23:17
Merlin   Всё исправил, только программа не хочет запускатьс...   17.05.2006 23:26
volvo   Что значит "не хочет запускаться"? Ты ни...   17.05.2006 23:41
Merlin   А как сделать чтобы можно было самому вводить : г...   17.05.2006 23:52
volvo   Ха... Так в том-то и фишка, что потоку все равно, ...   18.05.2006 0:00
Merlin   #include <stdio.h> #include <conio.h> ...   18.05.2006 21:55
volvo   Нет... Это не ко мне. В чистом С я не очень :( ...   18.05.2006 22:00
Merlin   Подскажи как тогда мне сделать чтобы на экране я м...   18.05.2006 22:14
volvo   Так лучше? #include <stdio.h> #include <c...   18.05.2006 23:02
Merlin   Спасибо за помощь. Теперь и задача работает и мне ...   19.05.2006 1:56


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

 



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