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

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

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2018, 10:56   #1
uppupp
 
Регистрация: 05.10.2018
Сообщений: 5
По умолчанию Реализация функций и корректная работа меню

Код:
#include <iostream>
#include <cstdio>
#include <fstream>
#include <cstdlib>
#include <cstring>

struct Time
{
	int h;
	int m;
};

struct Train {
  char appointed[40];
	Time time;
  int number;
} ;

int menuTitle(void){
  int c;

  printf("1. Ввод новых записей\n");
  printf("2. Просмотр списка\n");
  printf("3. Удаление записи из списка\n");
  printf("4. Добавление записи в список\n");
  printf("5. В файл\n");
  printf("6. Из файла\n");
  printf("7. Поиск записей\n");
  printf("8. Сортировка списка\n");
  printf("9. Выход\n");
  do {
    printf("Введите номер нужного пункта: ");
    std::cin >> c;
  } while(c < 1 || c > 9);
  return c;
}

void increaseSizeList(Train** train, int *max_size, int size, int n) 
{ 
	while(n>=*max_size)
	{
		*max_size = *max_size * 2; 
	} 
	*max_size = *max_size * 2; 
	Train *train1 = new Train[n]; 
	for (int i = 0;i<size;i++) 
	{
		train1[i] = *train[i]; 
	} 
	delete[]train; 
	*train = train1; 
}

Train createRecord() {
	Train adr;
	std::cout << "Введите номер поезда: ";std::cin >> adr.number;
	std::cout << "Введите пункт назначения: "; std::cin >> adr.appointed;
	std::cout << "Введите час : "; std::cin >> adr.time.h;
	std::cout << "Введите минуты : "; std::cin >> adr.time.m;
	return adr;
}

int enter(Train **train, int * max_size, int size){
	int n;
	std::cout<<" Введите число новых записей\n";
	std::cin>> n;
	for(int i = 0; i < n; i++)
	{
		*train[i] = createRecord();
	}
	return n;
}



void printList(Train *train, int size){
	for(int i = 0; i < size; i++)
	{
		std::cout << train[i].number << "    " << train[i].appointed << "          " << train[i].time.h << ":" << train[i].time.m << std::endl << std::endl;
	}
	// красивый вывод содержимого массива 
}

void deleteRecord(Train* train, int num, int size){
	// удалить существующую запись со сдвигом
}

void addRecord(Train** train, int max_size, int *size){
	// добавить в конец массива новую запись, если необходимо размер массива увеличить
}

void inFile(Train* train, int max_size, int size){
	std::ofstream out;
	out.open("train2.txt", std::ios::out);
	// запись в файл
	out.close(); 
}

int fromFile(Train** train, int *max_size, int *size){
	std::fstream in;
	// чтение из файла	
	return 0;
}

void findRecords(Train* train, int size){
	char appointed[40];
	std::cout << "Введите город "; std::cin>> appointed;
	// найти запись и вывести (использовать ф-цию compare)
}

int compare(const void * left, const void * right){ 	//для qsort
	if (strcmp(((Train*)left)->appointed, ((Train*)right)->appointed) == 1 )
		return 1;
	if (strcmp(((Train*)left)->appointed, ((Train*)right)->appointed) == 0 && strcmp(((Train*)left)->appointed, ((Train*)right)->appointed) == 1  )
		return 1;
	return 0;
}


int compare(Train adr, char *appointed){ 			// для поиска
	if (strcmp(adr.appointed, appointed) == 0 )
		return 1;
	return 0;
}

void sort (Train* train, int size){
	//выполнить сортировку с помощью функции qsort
	std::qsort(train, size, sizeof *train, compare);
	
}

void mySort (Train * train, int size){
	//выполнить сортировку, реализовать алгоритм сортировки (Сортировка вставками или Сортировка слиянием или Быстрая сортировка (Quicksort) или любую другую
}

int menu(Train *train, int max_size, int size){
    for(;;) {
    char choice = menuTitle();
    switch(choice) {
	case 1: size = enter(&train, &max_size, size);
		  break;
	case 2: printList(train, size);     
		  break;
	case 3:
		  printf("\nВведите номер удаляемой записи: ");
		  int num;
		  std::cin >> num;
		  deleteRecord(train, num, size);
		  size--;
        	  break;
	case 4: addRecord(&train, max_size, &size); 
		  break;
	case 5: inFile(train, max_size, size);
		  break;
	case 6: fromFile(&train, &max_size, &size); 
		  break;
	case 7: findRecords(train, size);  
		  break;
	case 8: sort(train, size);
		  break;
	case 9: exit(0);
		  delete[]train;
		  break;
    }
  }
}



int main(void)
{
  setlocale(0,"");
  int max_size = 5;				// мах зарезервированное количество записей в списке поездов
  int size = 0; 				// всего записей в списке = size (номер новой будущей записи в списке)
  Train * train = new Train[max_size]; 	// массив для хранения списка поездов
  menu(train, max_size, size);
}
800 Руб. на Сбербанк

Последний раз редактировалось uppupp; 06.10.2018 в 11:48. Причина: Нужно доделать недостающие!!! функции и решить проблему с выводом
uppupp вне форума Ответить с цитированием
Старый 06.10.2018, 11:03   #2
MansMI
Пользователь
 
Регистрация: 04.07.2012
Сообщений: 32
По умолчанию

дороже, почта в подписи
MansMI вне форума Ответить с цитированием
Старый 06.10.2018, 11:04   #3
uppupp
 
Регистрация: 05.10.2018
Сообщений: 5
По умолчанию

Цитата:
Сообщение от MansMI Посмотреть сообщение
дороже, почта в подписи
максимум рублей 400, это всё что у меня осталось от стипендии
uppupp вне форума Ответить с цитированием
Старый 07.10.2018, 01:29   #4
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

uppupp, обращайтесь e-mail: informatik101@mail.ru vk.com/alexcoder1
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 08.10.2018, 13:38   #5
JIeIIIa
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 54
По умолчанию

Если еще актуально, пишите: stealth(собака)bigmir.net
Сразу указывайте на когда нужна работа и предполагаемый бюджет.
JIeIIIa вне форума Ответить с цитированием
Старый 12.10.2018, 09:32   #6
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Пишите: larbossfreelance@yandex.ru
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с ems api: корректная работа только при явном указании города mrdemkin JavaScript, Ajax 3 02.03.2015 18:23
Не корректная работа программы heret1c Помощь студентам 2 17.05.2014 23:50
Не корректная работа INDY10 в Delphi 2010 Virus25 Работа с сетью в Delphi 8 04.05.2013 14:53
Не корректная работа Darth_Vader C# (си шарп) 2 20.05.2012 07:52
mingw32-g++ и msvs6 не корректная работа fstream под windows Asain-Asa Общие вопросы C/C++ 1 18.11.2009 00:06