Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Записи, файл, С/C++ ( Задачка) 
:(
    Опции темы
Gromila
Дата 16.5.2006, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



Условие :

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

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

Вот код Паскаля :



Код

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 MAIL   Вверх
Mayk
Дата 17.5.2006, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Что не понятно конкретно? 


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
MAKCim
Дата 17.5.2006, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Код

struct book
{
    book(const string& p_author, const string& p_name,
        unsigned int p_year=2006, unsigned p_count=1)
        : author(p_author), name(p_name), year(p_year), count(p_count) {}

    string author, name;
    unsigned int year, count;
};

ofstream& operator<<(ofstream& stream, const book& obj)
{
    stream<<obj.author<<endl<<obj.name<<endl<<
        obj.year<<endl<<obj.count<<endl;
    return stream;
}

ifstream& operator>>(ifstream& stream, book& obj)
{
    stream>>obj.author>>obj.name>>obj.year>>obj.count;
    return stream;
}

int main()
{
    book a("a","b"), c("c","d");
    ofstream stream("data.dat");
    stream<<a<<b;
    return 0;
}
   

Это сообщение отредактировал(а) MAKCim - 17.5.2006, 07:59


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Gromila
Дата 17.5.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



Mayk 

Да мне почти ничего непонятно..работали раньше на Паскале, а тут С++ этот...С файлами у меня вообще проблемы...


------------------
MAKCim 

Спачибо за код, только он что то не хочет компилиться.. ошибку пишет в 4 строке, но т.к. я ничего не понимаю мне трудно исправить её.

  Может это из за того, что у меня компилятор  TC++ 3.0  
PM MAIL   Вверх
likehood
Дата 17.5.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 8
Всего: 24



Цитата(Gromila @  17.5.2006,  15:45 Найти цитируемый пост)
Может это из за того, что у меня компилятор  TC++ 3.0 

именно из-за этого. Вот код для твоего компилера:
Код

#include <fstream.h>
struct book    
{    
    book(const char* p_author, const char* p_name,    
        unsigned int p_year=2006, unsigned p_count=1)    
        : author(p_author), name(p_name), year(p_year), count(p_count) {}    
    char *author, *name;
    unsigned int year, count;
};    
ofstream& operator<<(ofstream& stream, const book& obj)    
{    
    stream<<obj.author<<endl<<obj.name<<endl<<    
        obj.year<<endl<<obj.count<<endl;    
    return stream;    
}    
ifstream& operator>>(ifstream& stream, book& obj)    
{    
    stream>>obj.author>>obj.name>>obj.year>>obj.count;    
    return stream;    
}
int main()    
{    
    book a("a","b"), c("c","d");    
    ofstream stream("data.dat");    
    stream<<a<<b;    
    return 0;    
}
 
PM MAIL   Вверх
MAKCim
Дата 17.5.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Может это из за того, что у меня компилятор  TC++ 3.0   

возьми что по-новее или принципиально надо этот? 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Gromila
Дата 17.5.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



Принципиально надо TC  ++ 3.0, так в универе только в нём сказали делать...
   Спасибо ещё раз , что исправил код, но вот тут опять 2 ошибки вылезли.

Вот эти :


1). Cannot convert 'const char*' to 'char*'
2). Undefined symbol 'b' 
PM MAIL   Вверх
_hunter
Дата 17.5.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



1 -- ну и убери const из определения
2 -- объяви эту b 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Gromila
Дата 17.5.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



Цитата

1 -- ну и убери const из определения
2 -- объяви эту b  


Сделал, вот только всё равно не пашет. Если не трудно напишите код.

А вообще нужно делать что то наподобие вот этого, помогите пожалуйста smile , токо это не моя задача...

Код

#include <stdio.h> 
#define SIZE 100 
struct y4astnik { 
char name[SIZE], 
fam[SIZE], 
country[SIZE]; 
int  res[4]; 
}; 
void *readln(char *s, int size) 
{ 
int c; 
while ((c = getchar()) != '\n' && size-- > 0) 
*s++ = c; 
*s = 0; 
} 
int summ(struct y4astnik *p) 
{ 
int i, s; 
for (s = i = 0; i < 4; i++) 
s += p->res[i]; 
return s; 
} 
int main(void) { 
struct y4astnik ppl[50]; 
int i, j; 
int n, max; 
FILE *f; 
char name[256]; 
printf("total = "); 
scanf("%i", &n); 
for (i = 0; i < n; i++) 
{ 
readln(ppl[i].name, 1); 
printf("Y4astnik %i\n", i + 1); 
printf("Name: "); 
readln(ppl[i].name, SIZE); 
printf("Fam: "); 
readln(ppl[i].fam, SIZE); 
printf("Country: "); 
readln(ppl[i].country, SIZE); 
for (j = 0; j < 4; j++) 
{ 
printf("res[%i]: ", j + 1); 
scanf("%i", &ppl[i].res[j]); 
} 
} 
max = 0; 
for (i = 1; i < n; i++) 
if (summ(&ppl[i]) > summ(&ppl[max])) 
max = i; 
printf("Winner is %i!\n", max + 1); 
printf("Name: %s\nFam: %s\nCountry: %s\n", ppl[max].name, 
ppl[max].fam, ppl[max].country); 
printf("FileName: "); 
readln(name, 1); 
readln(name, 255); 
f = fopen(name, "w"); 
for (i = 0; i < sizeof(struct y4astnik) * n; i++) { 
fprintf(f, "%c", *((char *)ppl + i)); 
} 
fclose(f); 
return 0; 
} 
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0814 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.