• Страница 1 из 1
  • 1
Модератор форума: No_MaTTeR, Dimitro, LightInDarkness  
programmersf?rum??u/showthread.php?t=??????
123veve123
Рыцарь
programmersf?rum??u/showthread.php?t=??????

как может быть ошибка? запускаеться норм, но не робит...
Сообщение # 1 написано 23.12.2011 в 19:48
Присяжный
Фемида, детка <3
Сообщение # 2 написано 23.12.2011 в 19:49
123veve123
Рыцарь
мб кто знает поможет?
Сообщение # 3 написано 23.12.2011 в 19:58
Sherlоck
It's elementary.
Quote (123veve123)
как может быть ошибка?

падеж тот?
Quote (123veve123)
programmersf?rum??u/showthread.php?t=??????

WTF?!
Сообщение # 4 написано 23.12.2011 в 20:00
123veve123
Рыцарь
Всем доброго времени суток.
Помогите пожалуйста с заданием:
Назовём допустимым преобразованием матрицы перестановку двух строк или двух столбцов. Дана действительная квадратная матрица порядка n. С помощью допустимых преобразований добиться того, чтобы один из элементов матрицы, обладающий наименьшим значением, распологался в левом нижнем углу матрицы.
Ввод, решение, вывод, help должны находиться в меню из 6 пунктов:
1) ввод размерности матрицы и значения элементов с клавиатуры
2) вывести промежуточное решение
3) вывести полученный ответ
4) информация
5) условие задачи
6) выход
Также матрица должна быть задана двухмерным динамическим массивом и должна присутствовать защита от некорректного ввода(то есть размерность строго натуральное число, а элементы принимают действительные значения)
Вот код:
Code
#define k 100
using namespace std;
int menu();
int main()
{setlocale(LC_ALL,"Russian");
int n;
int a[k][k], i, j;
int temp, min_i, min_j;
int* b;  
int answer=menu();
switch (answer)
{
case 0:   
printf("Введите размеры матрицы  n: ");
scanf("%d",  &n);
b = (int *) malloc(n * n * sizeof(int));
printf ("\n Введите значения элементов"
"массива:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf ("a[%d][%d]=",i+1,j+1);
scanf("%d",&a[i][j]);
}
}
printf ("Нажмите любую клавишу для возвращения в меню...");
getch ();
main();
case 1:
printf("Исходная матрица:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%5d", a[i][j]);
}
printf("\n");
}
//минимальный элемент
min_i = 0;
min_j = 0;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (a[i][j] < a[min_i][min_j]) {
min_i = i;
min_j = j;
}}}
//замена колонн
for (i = min_j; i; i--) {
for (j = 0; j < n; j++) {
temp = a[j][i];
a[j][i] = a[j][i - 1];
a[j][i - 1] = temp;
}
printf("местами столбцов %d и %d:\n", i, i + 1);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%5d", a[i][j]);
}printf("\n");}}
//замена строк
for (i = min_i; i<(n-1); i++) {
for (j = 0; j < n; j++) {    
temp = a[i][j];
a[i][j] = a[i + 1][j];
a[i + 1][j] = temp;
}
printf("замена строк %d и %d:\n", i+1, i + 2);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%5d", a[i][j]);
}printf("\n");}}
printf ("Нажмите любую клавишу для возвращения в меню...");
getch();
main();
case 2:
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%5d", a[i][j]);
}
printf("\n");
}
printf ("Нажмите любую клавишу для возвращения в меню...");
getch();
main();
case 3:
printf("Зачётная работа\n");
printf("Версия: 1.0\n");
printf("Дата: 22.12.11\n");
printf("Выполнил студент\n");
printf ("Нажмите любую клавишу для возвращения в меню...");
getch();
main();
case 4:
  printf("Условие задачи:\n");
printf("Назовём допустимым преобразованием матрицы перестановку двух строк или двух столбцов. Дана действительная"
     "квадратная матрица порядка n. С помощью допустимых преобразований добиться того, чтобы один из элементов матрицы,"
     "обладающий наименьшим значением, распологался в левом нижнем углу матрицы.\n");
printf ("Нажмите любую клавишу для возвращения в меню...");
getch();
main();
case 5:
exit (0);
}free(b);
system("pause");
return 1;
}
int menu() {
         int key=0;  
         int code;   
         do {
                 system("cls");   
                 key=(key+6)%6;   
                    if (key==0) cout<<"-> Ввод"<<endl;
                    else  cout<<"   Ввод"<<endl;
   
                    if (key==1) cout<<"-> Решение"<<endl;
                    else  cout<<"   Решение"<<endl;
   
                    if (key==2) cout<<"-> Ответ"<<endl;
                    else  cout<<"   Ответ"<<endl;
   
                    if (key==3) cout<<"-> Help"<<endl;
                    else  cout<<"   Help"<<endl;
         if (key==4) cout<<"-> Условие задачи"<<endl;
                    else  cout<<"   Условие задачи"<<endl;
         if (key==5) cout<<"-> Выход"<<endl;
                    else  cout<<"   Выход"<<endl;
                    
                    code=getch();
                 if (code==224)
                    {
                    code=getch();
                    if (code==80) key++;  
                    if (code==72) key--;  
                         }
            }while(code!=13);  
                 system("cls");   
         return key;  
   
}

Так вот проблема заключаеться в том, что после ввода значений, перейдя к пункту меню №2 программа не берёт введенные значения.
P.S. защиты от некорректного ввода здесь нет, пока не придумал как это организовать. Если не сложно намекните.
Сообщение # 5 написано 23.12.2011 в 20:02
3x1
Defend community ☠
Лол.
Сообщение # 6 написано 23.12.2011 в 20:04
  • Страница 1 из 1
  • 1
Поиск: