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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2012, 20:25   #1
Alexandr_Snorlax
Пользователь
 
Регистрация: 23.12.2011
Сообщений: 12
По умолчанию Ошибка в проге Си++

Всем доброго времени суток. Перейду сразу к делу... Условие задания:
Назовём допустимым преобразованием матрицы перестановку двух строк или двух столбцов. Дана действительная квадратная матрица порядка n. С помощью допустимых преобразований добиться того, чтобы один из элементов матрицы, обладающий наименьшим значением, распологался в левом нижнем углу матрицы.

Прога работает, но почему-то выводит всё время только 0. Помогите пожалуйста.
Alexandr_Snorlax вне форума Ответить с цитированием
Старый 08.01.2012, 20:26   #2
Alexandr_Snorlax
Пользователь
 
Регистрация: 23.12.2011
Сообщений: 12
По умолчанию

Код:
#include "stdafx.h"
#include "stdio.h"
#include "locale.h"
#include "conio.h"
#include "malloc.h"
#include "stdlib.h"
#include "string.h"
//Защита от некорректного ввода(для целых)
int zachita(void)
{

char str[5];
const int L=4;
char c;
int i=0, flag=0;

while( (c=_getch())!=13)
{if ((c==43)||(c==45)&&i==0) 
{
printf("%c",c);
str[i]=c;
i++;
str[i]='\0';

}
if ((c==48)&&(i<L)&&(flag!=1)&&(i!=0)) 
{
printf("%c",c);
str[i]=c;
i++;
str[i]='\0';

}

if (((c>=49)&&(c<=57))&&(i<L)&&(flag!=1)) 
{
printf("%c",c);
str[i]=c;
i++;
str[i]='\0';

}

if ((c==8)&&(i>0))
{
printf("\b \b");
i--;
str[i]='\0';
}

if ( (atoi(str)> 999)||atoi(str)< -999) {flag=1; 
printf("\b \b");
i--;
str[i]='\0';}
else flag=0;

}

return atoi(str);
}


// Ввод размерности матрицы.
int input (char *s, char c)
{int a;
setlocale(LC_ALL, "Russian");
do{
	printf("\nВведите размерность матрицы  1<%c<=10: ", c);
	a=zachita();
	}while((a>11)||(a<2));
	return a;
}
// Выделение памяти. (А)
float **memoryA (int M)
{
int i;
float **A;
A=(float **)calloc(M, sizeof(float *));
for(i=0; i<M; i++)
A[i]=(float *)calloc(M, sizeof(float));
return A;
}
 // Заполнение массива A с клавиатуры:
int input_elements (int M,float **A)
{
int i,j,f0 = 0;
printf("\nВведите элементы массива:\n");
for (i=0;i<M;i++)
 for (j=0;j<M;j++) {
              do {
			  printf ("A[%d][%d]= ",i+1,j+1);
              fflush(stdin);
              f0 = scanf_s("%d",&A[i][j]);
              if (f0 < 1) {
                       scanf_s("%d",&A[i][j]);
                     }
             }
              while (f0 < 1);
             }
return 0;
}
// Вывод массива А.
void output_arrA (float **A,int M)
{
setlocale(LC_ALL, "Russian");
int i,j;
 printf("\nМатрица A имеет вид:\n");
	for(i=0; i<M; i++)
	{
	for(j=0; j<M; j++) printf("%.5lg\t ",A[i][j]);
	printf("\n");
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian");
int i=0,j=0,M,min_i,min_j;
float **A,temp;
int c;
bool flag=0,flag1=0;


do{

system("cls");

printf ("\nМеню:");
printf ("\n1 - Ввод данных");
printf ("\n2 - Решение");
printf ("\n3 - Вывод");
printf ("\n4 - О программе");
printf ("\n5 - Условие задачи");
printf ("\n6 - Выход\n");
c=zachita();

	switch(c) 
	{
	case 1:   M=input ("", 'M');		   
			  A=memoryA (M);
		      input_elements(M,A);				
					    flag=1;						
			  printf("\n Для продолжения нажмите любую клавишу...");
			  _getch();
				  break;
		case 2: if (flag==1)
				{printf ("\n Решение выполняется.Промежуточные результаты:\n");
			output_arrA(A, M);
//находим минимальный элемент
	min_i = 0;
	min_j = 0;
	for (i = 0; i < M; i++) {
		for (j = 0; j < M; j++) {
			if (A[i][j] < A[min_i][min_j]) {
				min_i = i;
				min_j = j;
			}
		}
	}
	//переставляем последнюю строку со строкой, содержащей последний элемент
	for (j = 0; j < M; j++) {
		temp = A[min_i][j];
		A[min_i][j] = A[M-1][j];
		A[M-1][j] = temp;
	}
	printf("замена %d строки и %d:\n",i, min_i+1);
for (i = 0; i < M; i++) {

    for (j = 0; j < M; j++) {

      printf("%.5lg\t", A[i][j]);

    }

    printf("\n");

  }
  	//переставляем первый столбец со столбцом, содержащей последний элемент
	for (i = 0; i < M; i++) {
		temp = A[i][min_j];
		A[i][min_j] = A[i][0];
		A[i][0] = temp;
	}
    printf("замена 1 столбеца и %d:\n",min_j+1);
for (i = 0; i < M; i++) {

    for (j = 0; j < M; j++) {

      printf("%.5lg\t", A[i][j]);

    }

    printf("\n");

  }
  
						flag1=1;
						printf("\n Для продолжения нажмите любую клавишу...");
				 		_getch();
					}
				else {
						printf("\n Вы не ввели данные для расчета, пожалуйста выберите пункт 'Ввод данных'");
						printf("\n Для продолжения нажмите любую клавишу...");
						_getch(); }		
				  break;
		case 3: 	 if (flag==1)
					 {
						 if (flag1==1)
						 {
						printf ("Ответ:");
						output_arrA(A, M);
						printf("\n Для продолжения нажмите любую клавишу...");
						_getch();
						 }
						 else {printf ("\n Решение не было выполнено, пожалуйста выберите пункт 'Решение'");
						 _getch();}
					 }
					 else 
					 {
					printf("\n Вы не ввели данные для расчета");
					printf("\n Для продолжения нажмите любую клавишу...");
					 _getch();}
			      break;
		case 4:
			{
printf("Программа для перестановки строк и столбцов с минимальным элементом\n");
printf("\n Для продолжения нажмите любую клавишу...");
			}
				 _getch();break;
		case 5:
printf("Условие задачи!\n");
printf("\n Для продолжения нажмите любую клавишу...");
				 _getch();break;
		case 6: break;
		default: printf("\n Неверный выбор \n");_getch(); break;
	}
}while(c!=6);
return 0;
}
Alexandr_Snorlax вне форума Ответить с цитированием
Старый 08.01.2012, 20:28   #3
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

офф топ
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка в проге ronny137 Помощь студентам 13 14.12.2010 00:43
delphi, ошибка в проге 1nd1g0 Помощь студентам 6 19.04.2010 23:27
Ошибка в проге на Delphi Dimka666 Помощь студентам 16 03.06.2009 00:33
Ошибка в проге :( Defender42 Помощь студентам 15 29.05.2009 02:08
Ошибка в проге Detrix Помощь студентам 1 12.03.2008 08:28