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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2015, 17:32   #1
Kuroi
Новичок
Джуниор
 
Регистрация: 14.05.2015
Сообщений: 1
По умолчанию что не так с программой?

Код:
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>
#include<io.h>
#define k 5
#define TREE struct der
struct SISTEMA
{char st[20]; // станция назначения
int nom_p; // nom_pномер поезда
float vr; //vrвремя отправления
};
TREE
{SISTEMA w;
int c; // счетчик повторяющихся элементов
TREE *l; // ссылка влево
TREE *r; // ссылка вправо
};
TREE *q,*pr,*nom,*kr=0; // ссылки на корень дерева
SISTEMA *T;
char *menu[k] [60];
int i, pp, m; char key[20]; char name[20];
int Main_Menu(void); // функция меню
int Poisk_nom_p (TREE *d, int v); // поиск по номеру поезда
TREE *der (TREE *kr, SISTEMA word); // формирование дерева
void Crt_Der(); // Запись в дерево информации и вывод дерева на экран
void print_der (TREE *kr); // Печать дерева
int Poisk_st (TREE *d, char s[20]); // поиск по станции назначения
int main()
{pp=1; T=0;
*menu[0]= <<1. Создание дерева>>;
*menu[1]= <<2. Чтение дерева>>;
*menu[2]= <<3. Поиск по номеру в дереве>>;
*menu[3]= <<4. Поиск по названию станции в дереве>>;
*menu[4]= <<5. Конец работы>>;
*menu[5]= <<Введите номер строки:>>;
clrscr();
printf (<< <<Расписание ж/д 2015>>\n>>);
while(pp)
{Main_Menu();
clrscr();
}
printf (<<Конец работы с деревьями\n>>);
return 0;
}
/*Функция меню*/
Main_Menu(void)
{int ns, s;
flushall();
do
{for (i=0; i<k; i++)
printf (<<\n % s>>,*menu[i]);
printf (<<\n>>);
if (s=((scanf (<<%d>>,&ns)<1)))
{flushall(); clrscr();
printf (<<\n Ошибка в номере!! Будте внимательны>>);
}
}
while(s);
switch(ns)
{case 1: Crt_Der(); break;
case 2: print_der(kr);
getche();
break;
case 3:
/*Поиск по времени*/
printf (<<\n Введите номер поезда:>>);
int v;
scanf (<<%d>>,&v);
Poisk_nom_p (kr, v); break;
case 4:
/*Поиск по станции назначения*/
int sr/*, fl*/;
char s[20];
printf (<<\n Введите станцию назначения:>>);
scanf (<<%s>>, s);
Poisk_st (kr, s); break;
case 5: pp=0;
} return 0;
}
/*Формирование дерева*/
TREE *der (TREE *kr, SISTEMA word)
{if (kr==NULL) // дерево пустое, записываем информацию в вершину
{kr=new TREE; // выделяется память под новый элемент
 printf (<<\n % d % s%.2f>>, word.nom_p, word.st, word.vr);
printf (<<\n Номер поезда % d>>, word.nom_p);
printf (<<\n Станция назначения % s>>, word.st);
printf (<<\n Время отправления%.2f>>, word.vr);
kr->w=word; // присваиваем информацию
kr->c=1;
kr->l=kr->r=NULL;
}
else if (word.nom_p==kr->w.nom_p) // сравниваем поступившую информацию с информацией в узле
kr->c++; // элементы одинаковы, включается счетчик
else if (word.nom_p<kr->w.nom_p) kr->l=der (kr->l, word); // пока не встретится 0
else kr->r=der (kr->r, word); // иначе вправо
return kr;
}
/*Запись в дерево информации и вывод дерева на экран*/
void Crt_Der()
{
SISTEMA a;
a.nom_p=0;
while (a.nom_p!=-1)
{
printf (<<\n Введите номер поезда: (-1 – выход)>>);
scanf (<<%d>>, &a.nom_p);
if (a.nom_p==-1)
break;
flushall();
{printf (<<\n Введите название станции:>>);
scanf (<<%s>>, a.st);
printf (<<\n Введите время отправления:>>);
scanf (<<%f>>, &a.vr);
if (a.nom_p!=-1)
kr=der (kr, a);
}
}
}
/*Печать дерева*/
void print_der (TREE *kr)
{if(kr)
{print_der (kr->l); // обход левых ветвей
printf (<<\n Номер поезда % d>>, kr->w.nom_p);
printf (<<\n Станция назначения % s>>, kr->w.st);
printf (<<\n Время отправления%.2f>>, kr->w.vr);
printf (<<\n>>);
print_der (kr->r); // обход правых ветвей
}
}
/*Поиск по номеру поезда*/
int Poisk_nom_p (TREE *d, int v)
{
if (d==NULL)
{
printf (<<\n \t Элемент с заданным ключом не найден\n>>);
return 0;
}
else // Поиск элемента с заданным ключом
{if (v==d->w.nom_p)
{
printf (<<\n Станция назначения % s>>, d->w.st);
printf (<<\n Время отправления%.2f>>, d->w.vr);
 // print_der(kr);
getch();
}
/*Рекурсивный обход*/
if (v<d->w.nom_p) Poisk_nom_p (d->l, v);
if (v>d->w.nom_p) Poisk_nom_p (d->r, v);
}
}
/*Поиск по названию станции*/
int Poisk_st (TREE *d, char s[20])
{int sr, fl;
if (d==NULL)
printf (<<\n \t Элемент с заданным ключом не найден\n>>);
else // Поиск элемента с заданным ключом
{sr=strcmp (s, d->w.st);
if (sr<0)
{q=d; // сохраняем предидущую вершину
fl=1; // двигаемся влево
Poisk_st (d->l, s); // спускаемся влево
}
else
if (sr>0)
{q=d; // сохраняем предидущую вершину
fl=0; // двигаемся вправо
Poisk_st (d->r, s); // спускаемся вправо
}
else // нужный ключ (станция назначения) найден
{if (sr==0)
printf (<<\n Номер поезда % d>>, kr->w.nom_p);
printf (<<\n Время отправления%.2f>>, kr->w.vr);
getch();
}
/*Рекурсивный обход*/
if (s<d->w.st) Poisk_st (d->l, s);
if (s>d->w.st) Poisk_st (d->r, s);
}
}





именно в этом месте 
{pp=1; T=0;
*menu[0]= <<1. Создание дерева>>;
*menu[1]= <<2. Чтение дерева>>;
*menu[2]= <<3. Поиск по номеру в дереве>>;
*menu[3]= <<4. Поиск по названию станции в дереве>>;
*menu[4]= <<5. Конец работы>>;
*menu[5]= <<Введите номер строки:>>;
clrscr();

Последний раз редактировалось ACE Valery; 14.05.2015 в 18:21.
Kuroi вне форума Ответить с цитированием
Старый 14.05.2015, 18:20   #2
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

<< >> это что, кавычки?
SAMOUCHKA вне форума Ответить с цитированием
Старый 17.05.2015, 13:30   #3
Тимох
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 32
По умолчанию

Прохожу задачки по массивам, одна из задач умножение матриц... Написал часть исходника(ввод и вывод матриц(массивов))... он компилируется и выполняется, но по завершении выполнения появляется сообщение:
Run-Time Check Failure #2 - Stack around the variable 'pervay_matriza' was corrupted.

Вот исходник:
/*
Умножение матриц
*/


#include <iostream>
#include <conio.h>
#include <cstring>

using namespace std;


int main()
{
setlocale(LC_ALL,"Russian");

cout<<"\t\t Умножение матриц \n\n";
// создаю массивы(матрицы)
/* чтобы матрицу 1 можно было умножить на матрицу 2 нужно, чтобы число столбцов матрицы 1
равнялось числу строк матрицы 2 */
/*
в двумерном масиве первое число [] - число строк; второе число [] - число столбцов
*/
int pervay_matriza[3][4];
int vtoray_matriza [4][3];
cout<<"Введи первую матрицу \n";
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
cout<<"\t введи число в "<<(i+1)<<" строку "<<(j+1)<<" столбец: ";
cin>>pervay_matriza[i][j];
cout<<endl;
}
}
cout<<"Введи вторую матрицу \n";
for(int i=0; i<4; i++)
{
for(int j=0; j<3; j++)
{
cout<<"\t введи число в "<<(i+1)<<" строку "<<(j+1)<<" столбец: ";
cin>>pervay_matriza[i][j];
cout<<endl;
}
}
cout<<"Получаю матрицы \n";
cout<<"\t Первая матрица \n";
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
cout<<pervay_matriza[i][j]<<" ";
}
cout<<endl;
}
cout<<"\t Вторая матрица \n";
for(int i=0; i<4; i++)
{
for(int j=0; j<3; j++)
{
cout<<vtoray_matriza[i][j]<<" ";
}
cout<<endl;
}

cout<<"Нажми Enter для завершения программы";
_getch();
return 0;
}
Тимох вне форума Ответить с цитированием
Старый 17.05.2015, 18:59   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Зачем вы влезли в чужую тему?

Код:
cout<<"Введи вторую матрицу \n";
for(int i=0; i<4; i++)
{
for(int j=0; j<3; j++)
{
cout<<"\t введи число в "<<(i+1)<<" строку "<<(j+1)<<" столбец: ";
cin>>pervay_matriza[i][j];
Разве не вторая матрица?
p51x вне форума Ответить с цитированием
Старый 17.05.2015, 21:20   #5
Тимох
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 32
По умолчанию

Спасибо а я что то и не заметил, не внимательный какой то... Все четко работает
Тимох вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка типизированного файла (Подскажите, что не так с программой в Delphi?) vladimir412 Общие вопросы Delphi 5 06.05.2014 11:13
что не так с программой Juli) Паскаль, Turbo Pascal, PascalABC.NET 5 04.06.2013 08:23
Что-то не так в программе...не пойму что Karina_Vamp Помощь студентам 5 24.12.2010 21:06
Что-то с программой misher Общие вопросы Delphi 12 05.08.2010 15:26