Разработка программы и результаты выполнения
T3 = (List3 *) malloc (sizeof (List3)); // Создаем новый элемент. T1 = (List1 *) malloc (sizeof (List1)); // Создаем новый элемент. List3 *s = 0; // Указатель на первый элемент списка. Fprintf (f, «Последовательность целых чисел: «); Else { // Если вводим элемент верхнего списка. If (c == '8' || c == '2') { // Если идем вверх или вниз. Структура для трехнаправленного списка. Структура для… Читать ещё >
Разработка программы и результаты выполнения (реферат, курсовая, диплом, контрольная)
#include.
#include.
#include.
using namespace std;
FILE *f; // Файл для вывода результатов.
// Структура для однонаправленного списка.
struct List1.
{.
int info; // Информационное поле.
List1 *right; // Указатель на правый элемент.
};
// Структура для трехнаправленного списка.
struct List3.
{.
List1 *up; // Указатель на верхний элемент.
List1 *down; // Указатель на нижний элемент.
List3 *right; // Указатель на правый элемент.
};
// Вводит список. Возвращает число n.
int InputList (List3 **s).
{.
List1 *t1 = 0; // Указатель на текущий элемент верхнего или нижнего списка.
List3 *t3 = 0; // Указатель на текущий элемент трехнаправленного списка.
List1 *p2 = 0; // Указатель на последний введенный элемент верхнего списка.
List3 *p0 = 0; // Указатель на последний элемент трехнаправленного списка.
List1 *p1 = 0; // Указатель на последний введенный элемент нижнего списка.
int n = 0; // Количество элементов.
int a; // Вводимое число.
scanf («%d», &a);
fprintf (f, «%d «, a);
while (a ≠ 0) {.
n++;
t1 = (List1 *) malloc (sizeof (List1)); // Создаем новый элемент.
t1->info = a;
t1->right = 0;
if (n % 2 == 1) { // Если вводим элемент нижнего списка.
t3 = (List3 *) malloc (sizeof (List3)); // Создаем новый элемент.
t3->up = 0;
t3->down = t1;
t3->right = 0;
}.
if (n == 1) // Если вводим первый элемент.
*s = t3;
if (n % 2 == 1) { // Если вводим элемент нижнего списка.
if (n ≠ 1) { // Если вводим не первый элемент.
p1->right = t1;
p0->right = t3;
}.
p1 = t1;
p0 = t3;
}.
else { // Если вводим элемент верхнего списка.
if (n ≠ 2) // Если вводим не второй элемент.
p2->right = t1;
p2 = t1;
p0->up = t1;
}.
scanf («%d», &a);
fprintf (f, «%d «, a);
}.
fprintf (f, ««);
return n;
}.
// Просматривает список.
void ViewList (List3 *s).
{.
List1 *t1 = 0; // Указатель на текущий элемент верхнего или нижнего списка.
List3 *t3 = 0; // Указатель на текущий элемент трехнаправленного списка.
char y = 'y';
char c;
while (y == 'y') {.
printf («Просмотр списка «);
printf («(8 — Переход вверх, 2 — Переход вниз, 6 — Переход вправо, 0 — Конец просмотра): «);
fprintf (f, «Просмотр списка «);
fprintf (f, «(8 — Переход вверх, 2 — Переход вниз, 6 — Переход вправо, 0 — Конец просмотра): «);
t3 = s;
c = '?';
while (c ≠ '8' && c ≠ '2' && c ≠ '0') {.
if (c == '6') { // Если идем вправо.
if (t3->right ≠ 0) {.
printf («Вправо «);
fprintf (f, «Вправо «);
t3 = t3->right;
}.
else {.
printf («Пусто справа «);
fprintf (f, «Пусто справа «);
}.
}.
c = getch (); // Ждем нажатия клавиши.
while (c == '8' && t3->up == 0) {.
printf («Пусто вверху «);
fprintf (f, «Пусто вверху «);
c = getch (); // Ждем нажатия клавиши.
}.
}.
if (c == '8' || c == '2') { // Если идем вверх или вниз.
if (c == '8') { // Если идем вверх.
t1 = t3->up;
printf («Вверх «);
fprintf (f, «Вверх «);
}.
else { // Если идем вниз.
t1 = t3->down;
printf («Вниз «);
fprintf (f, «Вниз «);
}.
printf («6 — Переход вправо, 0 — Конец просмотра): «);
fprintf (f, «6 — Переход вправо, 0 — Конец просмотра): «);
c = getch (); // Ждем нажатия клавиши.
while (c ≠ '0') {.
if (c == '6') { // Если идем вправо.
if (t1->right ≠ 0) {.
printf («%d Вправо «, t1->info);
fprintf (f, «%d Вправо «, t1->info);
t1 = t1->right;
}.
else {.
printf («%d Пусто справа «, t1->info);
fprintf (f, «%d Пусто справа «, t1->info);
}.
}.
c = getch (); // Ждем нажатия клавиши.
}.
}.
printf («Новый просмотр? (y/n) «);
fprintf (f, «Новый просмотр? (y/n) «);
y = getch (); // Ждем нажатия клавиши.
}.
}.
void main ().
{.
setlocale (LC_ALL, «russian»); // Русский шрифт.
List3 *s = 0; // Указатель на первый элемент списка.
f = fopen («results.txt», «w»); // Открываем файл results. txt для записи результатов.
puts («Введите последовательность целых чисел, в которой 0 отмечает конец ввода:»);
fprintf (f, «Последовательность целых чисел: «);
int n = InputList (&s);
if (n < 1) {.
puts («В последовательности должно быть хотя бы одно число. Нажмите любую клавишу для выхода»);
fprintf (f, «В последовательности должно быть хотя бы одно число «);
fclose (f); // Закрываем файл.
getch (); // Ждем нажатия любой клавиши.
return;
}.
ViewList (s);
fclose (f); // Закрываем файл.
}.
Результат выполнения:
Таким образом, видим, что информационные поля и связи внутри списков и между списками настроены правильно.
Программа отлажена в Microsoft Visual Studio 2008.