Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


deviance, код писала я, и дефайн (а не константу, константа будет нечто другое) я ввела 3 что бы тестировать не 25 элементов а 9, согласитесь это легче, даже я там ошибки некоторые нашла, мой код теперь выглядит таким образом

Программа должна по выбору пользователя осуществлять ввод исходной матрицы с клавиатуры или из файла. Для этого программа должна содержать две соответствующие функции, указатель на одну из которых необходимо передавать в функцию для вычисления элементов массива Х. Данная функция должна вызывать через указатель одну из функций ввода элементов матрицы, производить вычисление элементов массива X в соответствии с заданием и возвращать указатель на этот массив. Кроме того, программа должна содержать функцию для вывода на экран и в файл исходной матрицы и результирующего массива, а также рекурсивную функцию определения в соответствии с заданием величины Y.
В программе не должно быть глобальных переменных.
Дана матрица А(5х5). Определить массив Х из 5 элементов, каждый из которых равен 1, если сумма модулей элементов соответствующего столбца больше наибольшего по модулю элемента матрицы и –1 в противном случае. Определить величину Y, как сумму положительных элементов первой строки матрицы, расположенных после первого нулевого элемента.
Код: Выделить весь код
#include<stdio.h>
#include <conio.h>
#include<locale.h>
#include <math.h>
#define n 3
//Функция вода элементов матрицы с клавиатуры
void input_matr(int a[n][n])
{
	int i,j;
	printf("Введите элементы матрицы А:  \n");
	for (i=0; i<n; i++)
		for (j=0; j<n; j++)
			scanf("%d", &a[i][j]);
}
//Функция заполнения матрицы 
void input_file (int (*a)[n])
{
	int i,j;
	FILE*file;
	file=fopen("c:\\matr.txt", "r");
	if (file)
	{
		for (i=0;i<n; i++)
			for(j=0;j<n;j++)
				fscanf(file,"%d",&a[i][j]);
		fclose(file);
	}
}
//функция вычисления элементов мссива х
int *mas_x(int(*a)[n],int *x, void (*pfunc)(int [n][n]))
{
	pfunc(a);
	int sum[n], max,i,j;
	static int x[n];
	pfunc(a);
	max=abs(a[0][0]);//нахождение максимального элемента матрицы
	for ( i=0; i<n; i++)
		for ( j=0; j<n; j++)
			if (abs(a[i][j]) > max)
				max=abs(a[i][j]);
	for ( j=0; j<n; j++)//сумма элеменов столбцов
	{
		sum[j]=0;
	for ( i=0; i<n; i++)
		sum[j]=sum[j]+a[i][j];
	sum[j]=abs(sum[j]);
	}
	for ( j=0; j<n; j++)
		if (sum[j]>max) x[j]=1;
		else x[j]=-1;
		return *a;
}
//функция вывода матрицы а и х
void output(const int x[], const int a[][N] )
{
	int i,j;
    printf("Матрица А:\n");
    for (i=0;i<N;i++)
    {
		for (j=0;j<N;j++)
        printf("%5d",a[i][j]);
		printf("\n");
     }
	printf("Массив Х:\n");
    for (i=0;i<N;i++)
		printf("%5d",x[i]);
	printf("\n");
}
int main()
{
	setlocale(LC_CTYPE,"");
    int a[N][N], x[N], c;
    void (*pfunc)(int [N][N]);
	do
	{
		printf("Ввод матрицы:\n1 - с клавиатуры\n2 - \
			   из файла\n");
		scanf("%d",&c);
	}
	while (c!=1 && c!=2);
	// Присваивание указателю адреса одной из функций:
	switch (c)
	{
	case 1: pfunc=&input_matr;
		break;
		case 2: pfunc=&input_file;
			}
	output(mas_x(a,x,pfunc),a);
	_getch();

int recurs(int p*, t, &sum)
{
	if (t==0)
		return 0;
	else sum=sum+recurs(p+1, t-1, sum);
}
}
Но она все равно не работает!((((((((((

Отправлено: 23:03, 10-05-2013 | #3