1.) Описать структуру с именем MARSH, содержащую следующие поля:
• название начального пункта маршрута;
• название конечного пункта маршрута;
• номер маршрута.
2.) Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH, записи должны быть упорядочены по номерам маршрутов;
• вывод на дисплей информации о маршрутах, которые начинаются или кончаются в пункте, название которого введено с клавиатуры;
• если таких маршрутов нет, выдать на дисплей соответствующее сообщение.
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
| #include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "stdio.h"
#include <iostream>
#include <cstdlib>
#include <string>
#include "malloc.h"
using namespace std;
struct MARSH
{
char nach[20];
char konech[20];
int nomer;
};
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
const int N=10;
int n;
MARSH *RASP;
int i;
float k;
printf("Введите количество < = %d\t", N);
scanf("%d",&n);
RASP=(MARSH*)malloc(n*sizeof(MARSH));
k=0;
bool flag;
int j;
int t;
flag=i=j=0;
system("cls");
system("title АВТОР ПРОГРАММЫ: ");
printf("\t\t\t.::***********************::.\n\n");
printf("------------------------------------------------------------------------------\n");
for (i=0;i<n;i++)
{
printf("Начальный пункт маршрута %i : ",i+1);
scanf("%s",&RASP[i].nach);
printf("Конечный пункт маршрута %i : ",i+1);
scanf("%s",&RASP[i].konech);
printf("Номер маршрута %i : ",i+1);
scanf("%d",&RASP[i].nomer);
}
printf("\n\t\t Введённые данные\n\t-----------------------------------------------------------------------\n");
printf("\t| Начальный пункт маршрута | Конечный пункт маршрута | Номер маршрута |");
printf("\n\t-----------------------------------------------------------------------\n");
//вывод на экран считанных элементов
for(j=0; j<n; j++) printf("\t|%25s | %23s | %15d|\n", RASP[j].nach, RASP[j].konech, RASP[j].nomer);
//сортировка элементов по номерам по значению поля nomer
for(i=0; i<n; i++)
for(j=0; j<(n-1); j++)
if(RASP[j].nomer>RASP[j+1].nomer)
{
RASP[n]=RASP[j];
RASP[j]=RASP[j+1];
RASP[j+1]=RASP[n];
}
//вывод на экран отсортированного списка элементов
printf("\t-----------------------------------------------------------------------\n");
printf("\t\t Отсортированный список\n\t-----------------------------------------------------------------------\n");
printf("\t| Начальный пункт маршрута | Конечный пункт маршрута | Номер маршрута |");
printf("\n\t-----------------------------------------------------------------------\n");
for(j=0; j<n; j++) printf("\t|%25s | %23s | %15d|\n", RASP[j].nach, RASP[j].konech, RASP[j].nomer);
printf("\t-----------------------------------------------------------------------\n");
//поиск
bool schet;
char poisk[20], tochka[20];
do
{
printf("Начальный или конечный пункт? [n/k]");
scanf("%s", &tochka);
if (tochka[0] =='n')
{
printf("Введите начальный пункт маршрута: ");
scanf(" %s", &poisk);
for (i=0; i<n; i++)
{
if (!(strcmp(RASP[i].nach, poisk)))
{
printf("Конечный пункт маршрута: %s Номер маршрута: %d\n", RASP[i].konech, RASP[i].nomer);
flag=0;
}
if (flag==1) printf("Начальный пункт маршрута отсутствует!\n");
flag=1;
}
}
else if (tochka[0] =='k')
{
printf("Введите конечный пункт маршрута: ");
scanf(" %s", &poisk);
for (int t=0; t<n; t++)
{
if (!(strcmp(RASP[t].konech, poisk)))
{
printf("Начальный пункт маршрута: %s Номер маршрута: %d\n", RASP[t].nach, RASP[t].nomer);
schet++;
}
if (schet=0) printf("Конечный пункт маршрута отсутствует!\n");
}
}
schet=0;
printf("Для выхода из программы нажмите Esc, для продолжения любую другую клавишу...\n");
}
while(_getch()!=27);
return 0;
} |
|
Собственно, проблема с поиском, перепробовал кучу вариантов, так и не разобрался, прошу помощи)
Как видно на скрине он пишет информацию по каждому маршруту.