Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/26: Рейтинг темы: голосов - 26, средняя оценка - 5.00
1766 / 443 / 45
Регистрация: 09.04.2009
Сообщений: 2,599

Дан массив данных о работающих в фирме

09.06.2009, 23:12. Показов 5803. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив данных о работающих в фирме:
фамилия, имя, отчество, адрес ( улица, дом, квартира) и дата поступления на работу (месяц, год).
Напечатать данные тех из них, кто на сегодняшний день проработал уже не менее 5 лет.
Вот результаты трудов.
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
//Дан массив данных о работающих в фирме.
//Напечатать данные тех из них, кто на 
//сегодняшний день проработал уже не менее 5 лет.
#include<iostream>
#include<conio.h>
#include<stdio.h>
#define FNAME "Workers.dat"//Имя файла
void main()
{
char fname[200]=FNAME;
FILE *out;//Файл
int year;//Дата пост. на работу
char fio;//Фам. Имя Отчест.
char adress;//Адресс
int i;//Дата для сортировки
 
printf("\nВведите дату:",i);
//Открываем файл для чтения
out=fopen("Workers.dat","rd");
printf("\nОшибка при открытии файла");
getch();
  while(!feof(out))
  {
  fscanf(out,"%f",&year);
  if (year>=i-5)//Сравнение, я думаю это не правильно.
      printf("\n:Проработал(и,а)не менее 5 лет:", fio, adress, year);
  }
fclose(out); //Закpываем файл
getch();
}
Как реализовать вот это "Напечатать данные тех из них, кто на сегодняшний день проработал уже не менее 5 лет."

И почему компилятор ругается вот так" использована неинициализированная локальная переменная "adress"", так же ругается на "i" и "fio".
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.06.2009, 23:12
Ответы с готовыми решениями:

Дан массив о работающих в фирме
Дан массив данных о работающих в фирме : Фамилия, Имя, Отчество, Адрес(улица, дом, квартира) и дата поступления на работу(месяц, год)....

Дан массив работающих в фирме
Дан массив данных о работающих в фирме: фамилия, имя, отчество, адрес (улица, дом, квартира) и дата поступления на работу (месяц, год). ...

Дан текстовый файл, в котором хранятся данные о работающих в фирме: фамилия, имя , отчество, адрес
2. Дан текстовый файл, в котором хранятся данные о работающих в фирме: фамилия, имя , отчество, адрес - улица, дом, квартира - и дата...

27
 Аватар для Lerikh
14 / 15 / 1
Регистрация: 09.06.2009
Сообщений: 42
15.06.2009, 10:17
Студворк — интернет-сервис помощи студентам
допустим, но выражение, типа
(j=(*data -*workers[i].year))
полная ересть. тебе придется в таком случае (если работать с char'ами) переводить в строки в целочисленные форматы, иначе ты не сможешь выполнять математические операции
1
1766 / 443 / 45
Регистрация: 09.04.2009
Сообщений: 2,599
15.06.2009, 10:26  [ТС]
Цитата Сообщение от Lerikh Посмотреть сообщение
допустим, но выражение, типа

полная ересть. тебе придется в таком случае (если работать с char'ами) переводить в строки в целочисленные форматы, иначе ты не сможешь выполнять математические операции
А как иначе сравнить две даты, а потом проверить на условие.

дате значение int верну, иначе я из этого никогда не выберусь.
0
 Аватар для Lerikh
14 / 15 / 1
Регистрация: 09.06.2009
Сообщений: 42
15.06.2009, 10:41
попробуй хотябы так:

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
#include <iostream>
 
using namespace std;
int j, g;
 
struct Works{
        char fio[30];  
        char adres[30];
        int year;  
};
 
int main(){
        setlocale(0,"RUS");
        const int count = 3;
 
        int data;
                
                cout<<"Введите дату:";
                cin>>data;
        Works workers[count];
 
        for (int i = 0; i < count; i++)
                {
                            cout<<"Введите ФИО: ";   
                                cin.getline(workers[i].fio,30);
                cout<<"Введите адрес: "; 
                                cin.getline(workers[i].adres,30);
                cout<<"Введите дату трудоустройства: "; 
                                cin>>workers[i].year;
        }
                
        for (int i = 0; i < count; i++)
                {
                if ((data-workers[i].year) >= 5)
                        cout << "\nНе менее 5 лет проработал(а): \n"<< workers[i].fio
                             << "\nАдрес: " << workers[i].adres << '\n'
                             << "\nДата трудоустройства: " << workers[i].year << '\n'
                             << '\n';
        }
        system("pause");
        return 0;
}
Добавлено через 1 минуту 44 секунды
и вместо ++i используй i++.

Добавлено через 8 минут 51 секунду
вот еще что вспомнил есть функция getdate описана в dos.h можешь пользовать её
1
1766 / 443 / 45
Регистрация: 09.04.2009
Сообщений: 2,599
15.06.2009, 10:45  [ТС]
Это уже испытано ночью, пишет (Введите дату) вводишь
нажимаешь Enter, выводит сразу две строки(Введите ФИО: Введите адрес)
0
 Аватар для Lerikh
14 / 15 / 1
Регистрация: 09.06.2009
Сообщений: 42
15.06.2009, 10:47
ну попробуй вместо cin использовать scanf
1
1766 / 443 / 45
Регистрация: 09.04.2009
Сообщений: 2,599
15.06.2009, 11:11  [ТС]
Тоже самое
пишет (Введите дату) вводишь
нажимаешь Enter, выводит сразу две строки(Введите ФИО: Введите адрес)
0
1766 / 443 / 45
Регистрация: 09.04.2009
Сообщений: 2,599
20.06.2009, 19:01  [ТС]
Спасибо всем за помощь.
Доделал.
Вот работающий код:
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
56
57
58
#include <iostream>
 
using namespace std;
int  m, y, diff;
 
struct Works{
        char fio[30];   //ФИО
        char adres[30]; //Адрес
        int year;       //Год
        int m;          //Месяц
};
 
int main(){
        setlocale(0,"RUS");
        const int count = 3;
        char temp[2];
               
                cout<<"Введите месяц:";//дата для сравнения
                cin>>m;
                cin.getline(temp, 2);
                m=m/10000;
                cout<<"Введите год:";//дата для сравнения
                cin>>y;
                cin.getline(temp, 2);
                y=y%10000;
                
        Works workers[count];
 
        for (int i = 0; i < count; i++)
                {
                cout<<"Введите ФИО: ";   
                                cin.getline(workers[i].fio,30);
                cout<<"Введите адрес: ";
                                cin.getline(workers[i].adres,30);
                cout<<"Введите месяц трудоустройства: ";
                                cin>>workers[i].m;                                                              
                                cin.getline(temp, 2);
                cout<<"Введите год трудоустройства: ";
                                cin>>workers[i].year;                                                               
                                cin.getline(temp, 2);
        }     
        for (int i = 0; i < count; i++)
        {
             diff=(y-(workers[i].year%10000));
             if ((workers[i].m/10000)>(m))
                 diff=diff-1;
                {
                if (diff >= 5)//сравнение
                        cout << "\nНе менее 5 лет проработал(а): \n"<< workers[i].fio
                             << "\nАдрес: " << workers[i].adres << '\n'
                             << "\nМесяц трудоустройства: " << workers[i].m << '\n'
                             << "\nГод трудоустройства: " << workers[i].year << '\n'
                             << '\n';
                }
        }
        system("pause");
        return 0;
}
0
 Аватар для cristaloleg
149 / 50 / 3
Регистрация: 21.12.2008
Сообщений: 960
28.06.2009, 19:24
А зачем подключать iostream, если используется printf...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2009, 19:24

Дан массив данных о клиентах
Дан массив данных о клиентах пункта проката: фамилия, имя, отчество, адрес (улица, дом, квартира) и что взял (только один предмет). Во...

Дан массив данных о клиентах фирмы по прокату
помогите пожалуйста....Дан массив данных о клиентах фирмы по прокату: фамилия, имя, отчество, адрес (улица, дом, квартира) и что взял...

Дан массив данных, в котором хранятся данные о сотрудниках
Дан массив данных, в котором хранятся данные о сотрудниках: фио, табельный номер, номер отдела, количество рабочих часов, зарплата за...

Дан массив данных, в котором хранятся данные о кинотеатрах
Дан массив данных, в котором хранятся данные о кинотеатрах: наименование кинотеатра, адрес, количество мест, стоимость билета. Посчитать...

Дан массив данных, в котором хранятся данные о телевизорах на складе магазина
Дан массив данных, в котором хранятся данные о телевизорах на складе магазина: наименование, фирма-изготовитель, стоимость, размер экрана,...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru