Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: Студент
Рейтинг: 1441
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1336
∙ повысить рейтинг »
Micren
Статус: Бакалавр
Рейтинг: 1187
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / C/C++

Номер выпуска:1440
Дата выхода:09.12.2009, 00:30
Администратор рассылки:Dr_Andrew, Старший модератор
Подписчиков / экспертов:675 / 182
Вопросов / ответов:3 / 3
IRC-канал по теме:#C

Вопрос № 174837: Задача по обработке массива объектов. В данной задаче нужно: 1. Описать класс (структур) (согласно своего варианта задания); 2. Объявить массив объектов созданного типа на 10 элементов; 3. Написать программу, выполняющую следующие дей...


Вопрос № 174807: Здравствуйте! Вот такая проблема: Необходимо считать текстовый файл, содержащий информацию(приложение) сделать из него xml-файл и представить его с каким-нибудь дизайном в виде отчета,т.е. на html-странице Спасибо!!!...
Вопрос № 174814: В одномерном массиве, состоящем из n целых элементов, вычислить: 1. произведение элементов массива с четными номерами. 2. сумму элементов массива, расположенных между первым и последним нулевыми элементами. Заранее благодарю =) ...

Вопрос № 174837:

Задача по обработке массива объектов.
В данной задаче нужно:
1. Описать класс (структур) (согласно своего варианта задания);
2. Объявить массив объектов созданного типа на 10 элементов;
3. Написать программу, выполняющую следующие действия:
- ввод информации с клавиатуры в массив объектов;
- вывод на экран всей информации;
- вывод на экран информации, отвечающей условию поиска .
1. Структура с именем WORKER содержит следующие поля:
- фамилия и инициалы работника;
- название занимаемой должности;
- год поступления на работу.

2. Условие поиска – вывод на экран фамилий работников,
чей стаж работы в организации превышает значение,
введенное с клавиатуры.

Отправлен: 03.12.2009, 20:31
Вопрос задал: Сидорова Юлия Евгеньевна, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Micren, Бакалавр :
Здравствуйте, Сидорова Юлия Евгеньевна.
Программа. С++. MS VS 2008.
В программе не производится проверка на корректность вводимых данных.
Код:
#include <iostream>
#include <sstream>
#include <iterator>
#include <locale>
#include <string>
#include <list>
#include <algorithm>
#include <functional>
#include <ctime>

using namespace std;

// Класс - рабочий
class worker
{
public:
worker(wstring fio,wstring job,unsigned int year);
unsigned int year() const;
private:
wstring _fio;
wstring _job;
unsigned int _year;
friend basic_ostream<wchar_t>& operator<<(basic_ostream<wchar_t>& stream,const worker& right);
};

typedef list<worker> workerList;

int menu();
void addData(workerList& workers);
void printData(const workerList& workers);
void findData(const workerList& workers);

int main()
{
locale::global(locale("russian_russia.866"));
workerList workers;
while(true)
{
switch(menu())
{
case 0:
return 0;
case 1:
addData(workers);
break;
case 2:
printData(workers);
break;
case 3:
findData(workers);
break;
}
}
}

// Выводит меню
int menu()
{
while(true)
{
wcout<<L"Возможны следующие варианты:"<<endl
<<L"1 - Ввод данных"<<endl
<<L"2 - Вывод информации"<<endl
<<L"3 - Поиск"<<endl
<<L"0 - Выход"<<endl
<<L"Сделайте свой выбор:";
wint_t choice=_getwche();
wc out<<endl;
switch(choice)
{
case L'0':
case L'1':
case L'2':
case L'3':
return choice-L'0';
default:
wcout<<L"Будьте внимательней"<<endl;
}
}
}

// Добавляет данные к списку
void addData(workerList& workers)
{
while(true)
{
wcout<<L"Введите Ф.И.О.(пустая строка для выхода):";
wstring fio;
getline(wcin,fio);
if(fio.empty())
{
return;
}
wcout<<L"Должность:";
wstring job;
getline(wcin,job);
wcout<<L"Год:";
unsigned int year;
wcin>>year;
wcin.ignore(numeric_limits<streamsize>::max(),L'\n');
workers.push_back(worker(fio,job,year));
}
}

// Выводит список
void printData(const workerList& workers)
{
wcout<<L"Полный список:"<<endl;
copy(workers.begi n(),workers.end(),ostream_iterator<worker,wchar_t>(wcout,L"\n"));
}

// Функтор для поиска согласно стажа работы
class stageFunctor:unary_function<worker,bool>
{
public:
stageFunctor(unsigned int stage)
{
// Получим год ниже которого будем искать
time_t curTime=time(0);
#pragma warning(disable:4996)
_year=localtime(&curTime)->tm_year+1900-stage;
}
// Собственно сам функтор
result_type operator()(const argument_type& arg) const
{
return arg.year()<_year;
}
private:
unsigned int _year;
};

// Ищет данные согласно условия
void findData(const workerList& workers)
{
wcout<<L"Требуемый стаж работы:";
unsigned int stage;
wcin>>stage;
wcin.ignore(numeric_limits<streamsize>::max(),L'\n');
copy_if(workers.begin(),workers.end(),ostream_iterator<worker,wchar_t>(wcout,L"\n"),stageFunctor(stage));
}

worker::worker(wstring fio,wstring job,unsigned int year)
:_fio(fio)
,_job(job)
,_year(year)
{}

unsigned in t worker::year() const
{
return _year;
}

// Оператор вывода для worker
basic_ostream<wchar_t>& operator<<(basic_ostream<wchar_t>& stream,const worker& right)
{
basic_stringstream<wchar_t> sstr;
sstr<<L"Ф.И.О.:"<<right._fio<<L" Должность:"<<right._job<<L" Год:"<<right._year;
return stream<<sstr.str();
}

Пример вывода.
Код:
Возможны следующие варианты:
1 - Ввод данных
2 - Вывод информации
3 - Поиск
0 - Выход
Сделайте свой выбор:1
Введите Ф.И.О.(пустая строка для выхода):Иванов П.С.
Должность:Слесарь
Год:1999
Введите Ф.И.О.(пустая строка для выхода):Петров И.И.
Должность:Дворник< br>Год:2005
Введите Ф.И.О.(пустая строка для выхода):Сидоров А.П.
Должность:Директор
Год:1990
Введите Ф.И.О.(пустая строка для выхода):
Возможны следующие варианты:
1 - Ввод данных
2 - Вывод информации
3 - Поиск
0 - Выход
Сделайте свой выбор:2
Полный список:
Ф.И.О.:Иванов П.С. Должность:Слесарь Год:1 999
Ф.И.О.:Петров И.И. Должность:Дворник Год:2 005
Ф.И.О.:Сидоров А.П. Должность:Директор Год:1 990
Возможны следующие варианты:
1 - Ввод данных
2 - Вывод информации
3 - Поиск
0 - Выход
Сделайте свой выбор:3
Требуемый стаж работы:15
Ф.И.О.:Сидоров А.П. Должность:Директор Год:1 990
Возможны следующие варианты:
1 - Ввод данных
2 - Вывод информации
3 - Поиск
0 - Выход
Сделайте свой выбор:3
Требуемый стаж работы:8
Ф.И.О.:Иванов П.С. Должность:Слесарь Год:1 999
Ф.И.О.:Сидоров А.П. Должность:Директор Год:1 990
Возможны следующие ва рианты:
1 - Ввод данных
2 - Вывод информации
3 - Поиск
0 - Выход
Сделайте свой выбор:

Ответ отправил: Micren, Бакалавр
Ответ отправлен: 03.12.2009, 22:46

Оценка ответа: 5

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 257271 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 174807:

    Здравствуйте!
    Вот такая проблема:

    Необходимо считать текстовый файл, содержащий информацию(приложение)
    сделать из него xml-файл и представить его с каким-нибудь дизайном в виде отчета,т.е. на html-странице

    Спасибо!!!

    Отправлен: 03.12.2009, 01:01
    Вопрос задал: Миронычев Виталий, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Evgenijm, 10-й класс :
    Здравствуйте, Миронычев Виталий.

    Поскольку нужен все-таки конечный html и язык не важен, вот код на C#. Он читает с консоли ваш файл и выводит на консоль готовый html. Строки с неправильным количеством полей будет пропускать. Про файлы ничего не знает, поэтому запускать его надо так:
    Код:
    txt2xml
    <_LPH_MU.txt >out.html

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

    Приложение:

    Ответ отправил: Evgenijm, 10-й класс
    Ответ отправлен: 04.12.2009, 09:06

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 257292 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 174814:

    В одномерном массиве, состоящем из n целых элементов, вычислить:
    1. произведение элементов массива с четными номерами.
    2. сумму элементов массива, расположенных между первым и последним нулевыми элементами.

    Заранее благодарю =)

    Отправлен: 03.12.2009, 05:46
    Вопрос задал: Andrey4ik, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает leonid59, Студент :
    Здравствуйте, Andrey4ik. Ответ в приложении. CodeBlocks/GCC. Пример работы:
    Код:
    Введите размер массива не более 100 элементов: 7
    введите элементы 1 0 1 2 3 0 1
    Массив: 1;0;1;2;3;0;1;
    Произведение элементов с четными номерами = 3
    Сумма элементов между первым и последним нулями = 6

    Приложение:

    Ответ отправил: leonid59, Студент
    Ответ отправлен: 03.12.2009, 09:34

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 257241 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.12 от 30.11.2009

    В избранное