Анкета для опроса населения содержит две группы вопросов. Первая группа содержит сведения о респонденте: 1)возраст 2)пол 3)образование(начальное, среднее, высшее).Вторая группа содержит собственно вопрос анкеты, ответом на который может являться либо ДА либо НЕТ. Нужно написать программу, которая:
1)обеспечивает начальный ввод анкет и формирует из них линейный список;
2) на основе анализа анкет выдаёт ответы на следующие вопросы: а)сколько мужчин старше 40 лет, имеющих высшее образование, ответили ДА на вопрос анкеты; а)сколько женщин моложе 30 лет, имеющих начальное образование ответили НЕТ на вопрос анкеты; а)сколько мужчин моложе 24 лет, имеющих начальное образование, ответили ДА на вопрос анкеты;
3)производит вывод всех анкет на экран и ответов на вопросы.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.
Может кто переписать пожалуйста на С++
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ECSAnketaCS
{
public class Responder
{
public string FirstName { get; private set; }
public string SecondName { get; private set; }
public string LastName { get; private set; }
public int Age { get; private set; }
public string Sex { get; private set; }
public string Education { get; private set; }
public bool Answer { get; set; }
public Responder() { }
public Responder(string fN, string sN, string lN, int a, string s, string e)
{
FirstName = fN;
LastName = lN;
SecondName = sN;
Age = a;
Sex = s;
Education = e;
}
public override string ToString()
{
return string.Format("Фамилия: {0}, Имя: {1}, Отчество: {2}",
FirstName, SecondName, LastName);
}
}
public enum Sex
{
Male = 1,
Female = 2
}
public enum Education
{
Higth = 1,
Middle = 2,
Primary = 3
}
class Program
{
static void Main(string[] args)
{
int count;
Console.WriteLine("Введите количество респондентов: ");
while (!int.TryParse(Console.ReadLine(), out count))
{ Console.WriteLine("Ввод не верный! Повторите еще раз!"); }
List<Responder> responders = new List<Responder>();
//Ввод данных выбранного количества респондентов
for (int i = 0; i < count; i++)
{
Console.WriteLine("Введите имя: ");
string fName = Console.ReadLine();
Console.WriteLine("Введите отчество: ");
string sName = Console.ReadLine();
Console.WriteLine("Введите фамилию: ");
string lName = Console.ReadLine();
Console.WriteLine("Введите возраст: ");
int age;
while (!int.TryParse(Console.ReadLine(), out age))
{ Console.WriteLine("Ввод не верный! Повторите еще раз!"); }
Console.WriteLine("Выберите пол: [1] мужчина, [2] женщина: ");
string sex = Console.ReadLine();
while (!(sex == "1" || sex == "2"))
{
Console.WriteLine("Ввод не верный! Повторите еще раз!");
sex = Console.ReadLine();
}
Console.WriteLine("Выберите уровень образования: [1] высшее, [2] среднее, [3] начальное: ");
string educ = Console.ReadLine();
while (!(educ == "1" || educ == "2" || educ == "3"))
{
Console.WriteLine("Ввод не верный! Повторите еще раз!");
educ = Console.ReadLine();
}
responders.Add(new Responder(fName, sName, lName, age,
Enum.GetName(typeof(Sex), int.Parse(sex)),
Enum.GetName(typeof(Education), int.Parse(educ))));
}
//Опрос все респондентов
for (int j = 0; j < responders.Count; j++)
{
Console.WriteLine("Введите ответ на вопрос для:\n{0}: \n[1] Да, [2] Нет", responders[j].ToString());
string answ = Console.ReadLine();
while (!(answ == "1" || answ == "2"))
{
Console.WriteLine("Ввод не верный! Повторите еще раз!");
answ = Console.ReadLine();
}
responders[j].Answer = (answ == "1") ? true : false;
}
//Выбор вариантов вывода
Console.WriteLine("Выберите вариант вывода данных: [1], [2], [3], [4]: ");
string option = Console.ReadLine();
while (!(option == "1" || option == "2" || option == "3" || option == "4"))
{
Console.WriteLine("Ввод не верный! Повторите еще раз!");
option = Console.ReadLine();
}
switch (option)
{
case "1":
Option1(responders);
break;
case "2":
Option2(responders);
break;
case "3":
Option3(responders);
break;
case "4":
Option4(responders);
break;
}
Console.WriteLine("Программа завершена! Нажмите Enter для выхода...");
Console.ReadLine();
}
//Метод варианта 1
static void Option1(List<Responder> responders)
{
var result = from n in responders
where (n.Age > 40 && n.Sex == "Male" && n.Answer == true)
select n;
foreach (var r in result)
{
Console.WriteLine("{0}, Ответ: {1}", r.ToString(), r.Answer);
}
}
//Метод варианта 2
static void Option2(List<Responder> responders)
{
var result = from n in responders
where (n.Age < 30 && n.Sex == "Female" && n.Education == "Middle" && n.Answer == false)
select n;
foreach (var r in result)
{
Console.WriteLine("{0}, Ответ: {1}", r.ToString(), r.Answer);
}
}
//Метод варианта 3
static void Option3(List<Responder> responders)
{
var result = from n in responders
where (n.Age < 25 && n.Sex == "Male" && n.Education == "Middle" && n.Answer == true)
select n;
foreach (var r in result)
{
Console.WriteLine("{0}, Ответ: {1}", r.ToString(), r.Answer);
}
}
//Метод варианта 4
static void Option4(List<Responder> responders)
{
foreach (Responder r in responders)
{
Console.WriteLine("{0}, Ответ: {1}", r.ToString(), r.Answer);
}
}
}
}