Дан массив данных, как доделать программу. что бы работала

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

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

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

Romeo » 22 июн 2009, 10:08

Да, можно, я даже думал над этим. Проблема здесь в том, что многие люди, прочитав подсказку в моей подписи копируют тэг через clipboard и вставляют в своё сообщение. Сам понимаешь, что русские буквы 'с' и 'о' сыграют в этом случае с ними злую шутку :)

В общем, название продукта ты не знаешь, я правильно понял? Так вот, совет от меня, говори только то, в чём уверен. К людям, говорящим по делу, совсем другое отношение.

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

Airhand » 21 июн 2009, 18:35

Romeo писал(а): Относись к людям так, как ты хочешь, чтобы они относились к тебе. Ты мне нагрубил, обвинив в отсутствии логики, я тебе ответил тем же.
А что нельзя написать так [соde=срр], чтобы движок форума не прохавал ? Например, вот так: [соde=cpp]Код[соde].

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

Alex.K » 21 июн 2009, 17:20

Romeo спасибо.
Понял, переделаю позже.

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

Romeo » 21 июн 2009, 15:12

Alex.K, деление на 10000 и вычисление остатка от деления на 10000 нужно было для того, чтобы из числа типа 122009 извлечь месяц и год, то есть 12 и 2009.

На данный момент я вижу, что ты поменял программу и теперь хранишь месяц и год отдельно. Таким образом, тебе уже не нужно деление и вычисление остатка. Теперь тебе достаточно выполнить действия:

Код: Выделить всё

diff = y2 - y1;
if (m2 < m1) --diff;
&quot писал(а):Это, наверное, учителя так учат: называть людей недалёкими..
Относись к людям так, как ты хочешь, чтобы они относились к тебе. Ты мне нагрубил, обвинив в отсутствии логики, я тебе ответил тем же.

Ты название продукта мне скажешь или нет?

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

Alex.K » 20 июн 2009, 18:43

Romeo спасибо за ответ и огромное спасибо за науку.
Всем также спасибо за помощь.
Всё доделал, всё работает.
Вот работающий код:

Код: Выделить всё


#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;
}

:)


/ 10000;
% 10000
А что такое эти 10000?

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

Airhand » 20 июн 2009, 12:45

Romeo писал(а):Для недалёких людей естественно логика отсутствует :)
Это, наверное, учителя так учат: называть людей недалёкими...

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

Romeo » 20 июн 2009, 09:52

Всё, верно, в глазах рябит от нулей, потому недосчитался одним :)

Исправил прямо в сообщении. Также исправил строку (m1 = 11) на (m1 =12). Это тоже опечатка была.

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

somewhere » 20 июн 2009, 00:57

&quot писал(а):m = d / 1000;
y = d % 1000;
Не 1000, а 10000.

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

Romeo » 19 июн 2009, 21:53

Ну смотри, у тебя есть два числа, например 121990 и 112005. Задача вычислить сколько целых лет прошло от первой даты до второй, при условии, что в каждом числе первые две цифры обозначают месяц, а следующие 4 цифры - год.

Для каждого числа нужно посчитать два значения. Обозначим число за d, а месяц и год за m и y соответственно. Тогда имеем следующие соотношения:

m = d / 10000;
y = d % 10000;

Следующий шаг - вычисление разницы полных лет. Для этого нужно рассмотреть разницу лет из второго числа и первого числа:

diff = y2 - y1 = 2005 - 1990 = 15 лет.

Затем нужно проверить у какой даты номер месяца больше. Если у второй даты номер больше или равен, то всё хорошо. Если же у второй даты номер меньше, чем у первой, то разницу лет нужно уменьшить на 1, так как последний год получается неполным.

В нашем случае (m2 = 11) < (m1 = 12), следовательно diff = diff - 1 = 14 лет.

Это и есть наш ответ. После этого diff, согласно заданию, нужно сравнить с числом 5. Вот и вся премудрость.

Я написал всё словами, а не предоставил готовую программу для того, чтобы ты попробовал реализовать алгоритм сам. Удачи.

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

Alex.K » 19 июн 2009, 20:21

Romeo спасибо за ответ.
Только растолкуйте, как это сделать.
Модифицировать year и data, если да, то как? :confused:

Вернуться к началу