Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2013, 22:05   #1
dkii
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 54
Стрелка Ошибка в коде

1 Составить программу, которая описывает структуру в соответствии с вариантом и записывает введенные пользователем данные в бинарный файл (использовать потоки). Процесс введения прерывается пользователем.

2 Составить программу, которая, считывая информацию из файла, выполняет ее обработку (не использовать массивы). Результат выводить на экран и в текстовый файл.

Помогите пожалуйста, проблема со второй частью, а именно с ювилеем

«Співробітник»: прізвище, дата народження, рік прийняття на роботу, кількість дітей., оклад

Надрукувати список співробітників, які в поточному році відзначають ювілей
cpp(68): error C2440: =: невозможно преобразовать "char *" в "int"

Код:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <conio.h>
#include <stdio.h> 
 
 
using namespace std;
struct days
{
    char day[2];
    char month[ 10];
    char year[4];
}a;
 
 
struct man 
{
    char surname[30];
    days a;
    char yearofbegin[4];
    char kids[2];
    char salary[10];
}s;
 
void main(){
 
setlocale(LC_ALL, "Russian");
char c;
 ofstream f2("textin.txt",ios::binary); 
 do 
  { 
  
  cout<<"Введите фамилию сотрудника: ";
  cin>>s.surname; 
 
  cout<<"Введите дату рождения: "<<endl; 
  cout<<"     "<<"День : "; 
  cin >> s.a.day;
  cout<<"     "<<"Месяц : "; 
  cin>>s.a.month; 
  cout<<"     "<<"Год : "; 
  cin>>s.a.year; 
  cout<<" Введите год принятия на роботу: "; 
  cin>>s.yearofbegin; 
  cout<<" Введите количество детей: "; 
  cin>>s.kids; 
  cout<<" Введите оклад : "; 
  cin>>s.salary; 
  f2.write((char*) &s, sizeof (s)); 
  cout<<" Для завершения работы нажмите звездочку *\n"; 
 
  c=getch(); 
  } 
 while (c!='*'); 
 f2.close(); 
 cout<<"Данные записаны в файл"; 
 getch(); 
 { 
 int y=0;
 ifstream f2("textin.txt",ios::binary); 
 
  f2.read((char*)&s,sizeof(s)); 
 
 while (! f2.eof()) 
  { 
   
   y=y+a.year;
   if (y/10)
   f2.read((char*)&a,sizeof(a)); 
 }
    
 cout<<y;  
 f2.close(); 
 
 system("pause");
         
}
}
dkii вне форума Ответить с цитированием
Старый 24.12.2013, 09:58   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Ну а что вы хотите?.. Смотрите что вы делаете:
Код:
y=y+a.year;
К числу прибавляете массив из 4 символов и пытаетесь это впихнуть опять в число.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 25.12.2013, 20:35   #3
dkii
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 54
По умолчанию

Код:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <conio.h>
#include <stdio.h> 
 
using namespace std;

struct days
{
    char day[2];
    char month[ 10];
    char year[4];
}a;
 
 
struct man 
{
    char surname[30];
    days a;
    char yearofbegin[4];
    char kids[2];
    char salary[10];
}s;
 
void main(){
 
setlocale(LC_ALL, "Russian");
char c;
 ofstream f2("textin.txt",ios::binary); 
 do 
  { 
  
  cout<<"Введите фамилию сотрудника: ";
  cin>>s.surname; 
 
  cout<<"Введите дату рождения: "<<endl; 
  cout<<"     "<<"День : "; 
  cin >> s.a.day;
  cout<<"     "<<"Месяц : "; 
  cin>>s.a.month; 
  cout<<"     "<<"Год : "; 
  cin>>s.a.year; 
  cout<<" Введите год принятия на роботу: "; 
  cin>>s.yearofbegin; 
  cout<<" Введите количество детей: "; 
  cin>>s.kids; 
  cout<<" Введите оклад : "; 
  cin>>s.salary; 
  f2.write((char*) &s, sizeof (s)); 
  cout<<" Для завершения работы нажмите звездочку *\n"; 
 
  c=getch(); 
  } 
 while (c!='*'); 
 f2.close(); 
 cout<<"Данные записаны в файл"; 
 getch(); 
 { 
 int y=0;
 ifstream f2("textin.txt",ios::binary); 
 
  f2.read((char*)&s,sizeof(s)); 
 
 while (! f2.eof()) 
  { 
   y=y+atoi(a.year);
   if (y/10)
   f2.read((char*)&a,sizeof(a));
 }
    
 cout<<y;  
 f2.close(); 
 
 system("pause");
         
}
}
иправил, подскажите как сделать так что бы считал юбилей и выводил его (y) на консоль. Заранее спасибо.
dkii вне форума Ответить с цитированием
Старый 25.12.2013, 23:39   #4
dkii
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 54
По умолчанию

ап111111111
dkii вне форума Ответить с цитированием
Старый 27.12.2013, 00:29   #5
dkii
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 54
По умолчанию

помогите пожалуйста
dkii вне форума Ответить с цитированием
Старый 28.12.2013, 13:23   #6
dkii
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 54
По умолчанию

ап12111111
dkii вне форума Ответить с цитированием
Старый 08.01.2014, 13:16   #7
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

Например я рассуждаю так.
Составим алгоритм.
Для начала нужно определить что такое юбилей.
Пример количество пройденных лет делится без остатка на 5.
Вычитаем "текущий год" -"год рождения", делим на 5
Если число целое, то выводим текущий год.
При этом число и месяц рождения должны совпадать с текущим днем и месяцем рождения.

В общем написание такого кода теперь займет минут пять.

Надеюсь поможет.

Последний раз редактировалось vvmcpp; 08.01.2014 в 13:20.
vvmcpp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
ошибка в коде c# Roegis Помощь студентам 6 14.01.2011 13:00
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58
Ошибка в коде Molochnik Общие вопросы C/C++ 0 20.06.2010 07:50