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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2009, 19:58   #1
aka_faith
Пользователь
 
Аватар для aka_faith
 
Регистрация: 15.05.2009
Сообщений: 74
Восклицание разработка функций в Си

Многоуважаемые программисти или программеры-любители, помогите, плиз, подкоректировать прогу, а то я уже измучалась сама и измучала весь компилятор...

Задание :
Получить элементы квадратной матрицы А=||А(i,j)||, где A(i,j)=F(i,j)=2^i/((i-5/2)*(i+1)^2)*(2-|j-5|)^2 .из полученной матрицы получить компоненты массива Х, если в качестве X(i) принять max(a(i,j)-min(a(i,j)) каждой строки матрицы А. Вычислить значение U=f(X), где f(X)=min{|x(i+1)|-|x(i)|} ,1<=i<=n-1. Предусмотреть вывод на печать строк матрицы А, промежуточных матриц или массивов, результирующего массива Х, а также значение U.

Требования к выполнению работы:
1. Разработать функции формирования матриц
2. Разработать функции печати и обработки массивов
3. Для печати массивов функциям использовать указатели



Код:
#include <stdio.h>  
#include <conio.h>
#include <math.h>

void Form_Matrix(float *x,float k1,float k2,float k3,int *n)
{
  int i,j,k;
  scanf("%d",n);
  for(i=0;i<*n;i++)
    for(j=0;j<*n;j++)
    *(x+i**n+j)=fabs(pow(2,i)/((i-k1)*(i+k2)*(i+k2)))*((2-fabs(j-k3))*(2-fabs(j-k3)));
}

void Print_Matrix(float *x,int n,int m)
{
  int i,j;
    for(i=0;i<n;i++,printf("\n"))
      for(j=0;j<m;j++)
      printf(" %3.1f ",x[i*m+j]);
}

void Min_Max(float *f,int n, float *x)
{
  int i,j;
  float min=-1000,max=1000;
    for (i=1; i<n; i++)
      for (j=1; j<n; j++)
      {
       max = f[i][1] ;
       min = f[i][1] ;
       for (j=1; j<n; j++)
       {
	if (f[i][j]>max) max=f[i][j];
	if (f[i][j]<min) min=f[i][j];
       }
       printf ("min i max strok %d", i);
       printf ("max=%5.1f", max);
       printf ("min=%5.1f", min);
       x[i]=max-min;
      }
    
float U(float *x, int n)
for(i=1;i<n;i++)
      printf ("x[%d]=%5.1f\n", i, x[i]);
      if (n<3) printf ("U is not found: n<3");
      else
      {
      min=fabs(x[2])-fabs(x[1]);
      for (i=2; i<n; i++);
      {
       float xx=fabs(x[i+1])-fabs(x[i]);
	if(xx<fabs(min) min=xx;
	return min;
       } }



void main ()
{
  float F[36],min,x[6];
  int n1;
  clrscr();


  printf("matriza A\n");
  printf("razmer=");
  Form_Matrix(F,2.5,1,5,&n1);
  Print_Matrix(F,n1,x);
  printf("matriza Max-Min");
  Min_Max(F,6,x);
  min=U(F,n1,x);
  printf("\n %5.1f\n", min);
  


  getch();
}
Функции, которые вводят и печатают матрицу работают, а вот с обработкой беда..
aka_faith вне форума Ответить с цитированием
Старый 16.05.2009, 20:17   #2
aka_faith
Пользователь
 
Аватар для aka_faith
 
Регистрация: 15.05.2009
Сообщений: 74
По умолчанию

программа без функций выглядела вот так::
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>

const n=6;
void main ()
{
   clrscr ();
   float F[n][n], X[n], min, max;
   int i, j;
   printf ("matriza A\n");
   for (i=1; i<n; i++)
   {
      for (j=1; j<n; j++)
      {
        F[i][j]=fabs(pow(2,i)/((i-2.5)*i*i))*((2-fabs(j-5))*(2-fabs(j-5)));
        printf("%5.1f  ", F[i][j]);
      }
      printf("\n");
   }
   
    for (i=1; i<n; i++)
      for (j=1; j<n; j++)
      {
       max = F[i][1];
       min = F[i][1];
       for (j=1; j<n; j++)
       {
        if (F[i][j]>max) max=F[i][j];
        if (F[i][j]<min) min=F[i][j];
       }
       printf("min i max strok %d ", i);
       printf ("max=%5.1f  ", max);
       printf ("min=%5.1f\n", min);
       X[i]=max-min;	   
      }

   for (i=1; i<n; i++)
      printf ("X[%d] = %5.1f\n", i, X[i]);		        

   if(n<3) printf ("U is not found: n<3.");//определение U
   else
   {
     min = fabs(X[2])-fabs(X[1]);
     for(i=2; i<n;i++)
     {
       float xx = fabs(X[i+1])-fabs(X[i]);
       if (xx<min) min=xx;
     }	
     printf ("U = %5.1f\n", min);
   }
   getch();
}
а как будет с функциями??

Последний раз редактировалось aka_faith; 16.05.2009 в 20:20.
aka_faith вне форума Ответить с цитированием
Старый 16.05.2009, 20:23   #3
aka_faith
Пользователь
 
Аватар для aka_faith
 
Регистрация: 15.05.2009
Сообщений: 74
По умолчанию

как будет выглядеть функции void Min_Max и float U, которые из полученной матрицы получают компоненты массива Х, если в качестве X(i) принять max(a(i,j)-min(a(i,j)) каждой строки матрицы А;вычисляют значение U=f(X), где f(X)=min{|x(i+1)|-|x(i)|} ,1<=i<=n-1, предусмотревая вывод на печать строк матрицы А, промежуточных матриц или массивов, результирующего массива Х, а также значение U??
aka_faith вне форума Ответить с цитированием
Старый 16.05.2009, 21:31   #4
aka_faith
Пользователь
 
Аватар для aka_faith
 
Регистрация: 15.05.2009
Сообщений: 74
По умолчанию

люди, ПОМОГИТЕ, кто-нибудь!!! я ж ее мучаю-мучаю, спасите меня!! неужели никто не сможет ошибку исправить?? Вы ж такие прогища пишите, Вам эти функции на раз-два...
aka_faith вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
использование функций в качестве параметров других функций mono Помощь студентам 0 20.04.2009 18:25
Использование функций prikolist Общие вопросы C/C++ 15 06.04.2009 18:42
аппроксимация функций natasha Общие вопросы Delphi 6 26.08.2008 19:07
Разработка программ с использованием функций. Табулирование функции одного и двух переменных кася Паскаль, Turbo Pascal, PascalABC.NET 5 07.05.2008 20:11
Перегрузка функций... bondik Общие вопросы C/C++ 12 28.04.2008 01:07