Страница 3 из 3
Re: Дан массив данных, как доделать программу. что бы работала
Добавлено: 19 июн 2009, 20:21
Alex.K
Romeo спасибо за ответ.
Только растолкуйте, как это сделать.
Модифицировать year и data, если да, то как?

Re: Дан массив данных, как доделать программу. что бы работала
Добавлено: 19 июн 2009, 21:53
Romeo
Ну смотри, у тебя есть два числа, например 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: Дан массив данных, как доделать программу. что бы работала
Добавлено: 20 июн 2009, 00:57
somewhere
" писал(а):m = d / 1000;
y = d % 1000;
Не 1000, а 10000.
Re: Дан массив данных, как доделать программу. что бы работала
Добавлено: 20 июн 2009, 09:52
Romeo
Всё, верно, в глазах рябит от нулей, потому недосчитался одним
Исправил прямо в сообщении. Также исправил строку (
m1 = 11) на (
m1 =12). Это тоже опечатка была.
Re: Дан массив данных, как доделать программу. что бы работала
Добавлено: 20 июн 2009, 12:45
Airhand
Romeo писал(а):Для недалёких людей естественно логика отсутствует
Это, наверное, учителя так учат: называть людей недалёкими...
Re: Дан массив данных, как доделать программу. что бы работала
Добавлено: 20 июн 2009, 18:43
Alex.K
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: Дан массив данных, как доделать программу. что бы работала
Добавлено: 21 июн 2009, 15:12
Romeo
Alex.K, деление на 10000 и вычисление остатка от деления на 10000 нужно было для того, чтобы из числа типа 122009 извлечь месяц и год, то есть 12 и 2009.
На данный момент я вижу, что ты поменял программу и теперь хранишь месяц и год отдельно. Таким образом, тебе уже не нужно деление и вычисление остатка. Теперь тебе достаточно выполнить действия:
" писал(а):Это, наверное, учителя так учат: называть людей недалёкими..
Относись к людям так, как ты хочешь, чтобы они относились к тебе. Ты мне нагрубил, обвинив в отсутствии логики, я тебе ответил тем же.
Ты название продукта мне скажешь или нет?
Re: Дан массив данных, как доделать программу. что бы работала
Добавлено: 21 июн 2009, 17:20
Alex.K
Romeo спасибо.
Понял, переделаю позже.
Re: Дан массив данных, как доделать программу. что бы работала
Добавлено: 21 июн 2009, 18:35
Airhand
Romeo писал(а):
Относись к людям так, как ты хочешь, чтобы они относились к тебе. Ты мне нагрубил, обвинив в отсутствии логики, я тебе ответил тем же.
А что нельзя написать так [соde=срр], чтобы движок форума не прохавал ? Например, вот так: [соde=cpp]Код[соde].
Re: Дан массив данных, как доделать программу. что бы работала
Добавлено: 22 июн 2009, 10:08
Romeo
Да, можно, я даже думал над этим. Проблема здесь в том, что многие люди, прочитав подсказку в моей подписи копируют тэг через clipboard и вставляют в своё сообщение. Сам понимаешь, что русские буквы 'с' и 'о' сыграют в этом случае с ними злую шутку
В общем, название продукта ты не знаешь, я правильно понял? Так вот, совет от меня, говори только то, в чём уверен. К людям, говорящим по делу, совсем другое отношение.