Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.12.2018, 10:08   #1
LichKin
 
Регистрация: 13.12.2018
Сообщений: 4
По умолчанию Структуры с++

Ввести массив структур в соответствии с вариантом. Рассортировать массив в
алфавитном порядке по первому полю, входящему в структуру. В программе реализовать меню:
1) Ввод массива структур;
2) Сортировка массива структур;
3) Поиск в массиве структур по заданному параметру;
4) Изменение заданной структуры;
5) Удаление структуры из массива;
6) Вывод на экран массива структур;
7) Выход.

Структура «Человек»: фамилия, имя, отчество; домашний адрес; номер телефона;возраст.
Я написал код,но у меня некоторые затруднения
Код:
#include <iostream>
#include <cstring>
#include <windows.h>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include <cstring>
#include <iostream>


using namespace std;

char* Rus(const char* text);

char way[80];
char *file;
double x;
int p;

struct student
{
	char fio[50];
	char adr[50];
	int nom;
	double rat;
	void input();
};

void tabl()
{
	int z;
	for (z = 0; z < 80; z++)
		cout << '-';
}

void print(student *s, int n)
{
	int i;
	tabl();
	cout.setf(ios::left);
	cout << '|' << ' ' << setw(22) << Rus("ФИО");
	cout << '|' << ' ' << setw(34) << Rus("Домашний адрес");
	cout << '|' << ' ' << setw(7) << Rus("Номер телефона");
	cout << '|' << ' ' << setw(8) << Rus("Возраст");
	cout << '|';
	tabl();
	for (i = 0; i < n; i++)
	{
		cout.setf(ios::left);
		cout << '|' << ' ' << setw(22) << s[i].fio << '|';
		cout << ' ' << setw(34) << s[i].adr << '|';
		cout << ' ' << setw(7) << s[i].nom << '|';
		cout << ' ' << setw(8) << s[i].rat;
		cout << '|';
		tabl();
	}
}

void student::input()
{
	cout << Rus("Введите фамилию, имя, отчество человека -> ");
	cin.clear();
	_flushall();
	cin.getline(fio, 79);
	cout << Rus("Введите домашний адрес -> ");
	cin.clear();
	_flushall();
	cin.getline(adr, 79);
	cout << Rus("Введите номер телефона -> ");
	cin >> nom;
	cout << Rus("Введите возраст -> ");
	cin >> rat;
}

int main()
{
	student *s;
	int n, i, o = -1;
	for (; o;)
	{
		cout << Rus("1.Ввод с клавиатуры в консольном режиме\n2.Вывод на экран в консольном режиме\n3.Создать файл и записать в него структурированные данные\n");
		cout << Rus("4.Вывести созданный файл на экран\n5.Удалить всех людей с заданным возрастом\n");
		cout << Rus("6.Добавить элемент после заданного номера\n7.Выход\n");
		cout << Rus("\nВыберите нужный вам пункт -> ");
		cin >> o;
		cout << "\n";
		if (o == 1)
		{
			cout << Rus("Введите количество человек -> ");
			cin >> n;
			s = new student[n];
			for (i = 0; i < n; i++)
			{
				s[i].input();
			}
		}
		if (o == 2)
		{
			s = new student[n];
			cout << Rus("\nВведенные данные:\n");
			print(s, n);
		}
		if (o == 3)
		{
			cout << Rus("Введите путь к файлу или название файла для записи в него данных -> \n");
			cin.clear();
			_flushall();
			cin.getline(way, 80);
			ofstream output(way, ios::out | ios::trunc);
			output.setf(ios::left);
			if (!output.is_open())
			{
				cout << Rus("/nОшибка!\n");
				return 0;
			}
			for (i = 0; i < n; i++)
			{
				s = new student[n];
				output.setf(ios::left);
				output << setw(22) << s[i].fio;
				output << setw(34) << s[i].adr;
				output << setw(7) << s[i].nom;
				output << setw(8) << s[i].rat << "\n";
			}
			output.close();
		}
		if (o == 4)
		{
			cout << Rus("Введите путь к файлу или название файла для чтения из него данных -> \n");
			cin.clear();
			_flushall();
			cin.getline(way, 80);
			ifstream input(way, ios::in);
			const int buffer = 4096;
			file = new char[buffer];
			if (!input.is_open())
			{
				cout << Rus("Ошибка\n");
				return 0;
			}
			cout << Rus("\nПрочитанные данные из файла:\n");
			tabl();
			while (input.peek() != EOF)
			{
				input.getline(file, buffer);
				cout << file << "\n";
			}
			tabl();
			input.close();
		}
		if (o == 5)
		{
			cout << Rus("Введите путь к файлу или название файла для чтения из него данных\n");
			cin.clear();
			_flushall();
			cin.getline(way, 80);
			ofstream output(way, ios::out | ios::trunc);
			if (!output.is_open())
			{
				cout << Rus("Ошибка\n");
				return 0;
			}
			cout << Rus("Удалить из файла людей с возрастом -> ");
			cin >> x;
			for (i = 0; i < n; i++)
			{
				s = new student[n];
				if (x != s[i].rat)
				{
					output.setf(ios::left);
					output << setw(22) << s[i].fio;
					output << setw(34) << s[i].adr;
					output << setw(7) << s[i].nom;
					output << setw(8) << s[i].rat;
					output.put(13);
					output.put(10);
				}
			}
		}
		if (o == 6)
		{
			cout << Rus("Введите путь к файлу или название файла для чтения из него данных\n");
			cin.clear();
			_flushall();
			cin.getline(way, 80);
			ofstream output(way, ios::app);
			if (!output.is_open())
			{
				cout << Rus("Ошибка\n");
				return 0;
			}
			cout << Rus("Введите номер элемента, после которого следует добавить -> ");
			cin >> p;
			p = +1;
			student *r;
			r = new student[n];
			cout << Rus("Введите фамилию, имя, отчество человека -> ");
			cin.clear();
			_flushall();
			cin.getline(r[p].fio, 79);
			cout << Rus("Введите домашний адрес -> ");
			cin.clear();
			_flushall();
			cin.getline(r[p].adr, 79);
			cout << Rus("Введите номер телефона -> ");
			cin >> r[p].nom;
			cout << Rus("Введите возраст -> ");
			cin >> r[p].rat;
			output.seekp(p * sizeof(s[0]), ios::beg);
			output.setf(ios::left);
			output << setw(22) << r[p].fio;
			output << setw(34) << r[p].adr;
			output << setw(7) << r[p].nom;
			output << setw(8) << r[p].rat;
			delete[]r;
		}
		s = new student[n];
		if (o == 7)
		{
			return 0;
		}
		delete[]s;
	};
}
Как мне их устранить? И каким образом мне сделать так,чтобы выводилось на русском языке? Куда вставить команду,чтобы каждый раз не вставлять?


______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ
Изображения
Тип файла: jpg Снимок экрана (85).jpg (18.9 Кб, 139 просмотров)

Последний раз редактировалось Alex11223; 13.12.2018 в 10:14.
LichKin вне форума
Старый 13.12.2018, 10:18   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Убрать эту фигню и писать на английском. Ну или просто setlocale.

ЗЫ вранье, это не вы писали.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача структуры из программы на c# в dll на c++ и получение структуры из dll iukash Общие вопросы .NET 0 07.05.2013 16:03
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) _4Alex4_ Помощь студентам 1 14.11.2012 07:39
Написание программ (древовидные структуры, структуры неспециального вида и т.д.) Green Gin Фриланс 2 27.04.2012 15:26
Управляющие структуры. Программирование алгоритмов разветвляющейся структуры. Лёнка Компоненты Delphi 1 23.04.2012 15:03
Структуры C# Shenan C# (си шарп) 0 18.12.2011 22:19