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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 22:19   #1
NNAndr
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 17
По умолчанию Функция поиска min элемента на С

Здравствуйте. Помогите пожалуйста написать программу на С. Сам пробовал писать, написал, компилятор выдает ошибки, преподаватель объяснять не хочет( Вот задание :


Заданы матрицы A, B и C с размерами N×M, M×L и L×K соответственно. Вычислить и напечатать значения их минимальных элементов amin, bmin, cmin и переменной β=max{|amin|, |bmin|, |cmin|}. Вычисление минимального элемента матрицы оформить в виде функции.
Количество элементов в матрице не должно превышать 300. Размеры матриц вводить самому.
NNAndr вне форума Ответить с цитированием
Старый 29.11.2012, 22:30   #2
studen
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 88
По умолчанию

Исходники в студию!

И что за ошибка, на какой строке кода компилятор ее нашел? Поможем разобраться.
studen вне форума Ответить с цитированием
Старый 29.11.2012, 22:36   #3
NNAndr
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 17
По умолчанию

Код:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
float mentos(int,int,float*);
float max(float,float,float);
int const size=100;

int main()
{
int N,M,L,K;
int i,j,t1,t2,t3;
float Arr1[size][size],Arr2[size][size],Arr3[size][size];
float B,minarr1,minarr2,minarr3;
char vb;
printf("Enter the dimensions N,M,L,K for arrays NxM MxL LxK, but the number of elements in the matrix should not exceed 300.\n");
scanf("%d%d%d%d",&N,&M,&L,&K);
t1=N*M;
t2=M*L;
t3=L*K;
if (t1>300 || t2>300 || t3>300)
{printf("Input Error. Completion of the program");
return 1;}
else{
srand((unsigned int)time(NULL));
printf("Enter data manually N*M or automatically?\n Enter 'Y' for maneally or 'N' for automatically.\n");
scanf("%s", &vb);
switch(vb)
{
case 'Y':case 'y':
{printf("Enter data for array N*M,please");
for(i=0;i<N;i++)
            {
                for(j=0;j<M;j++)
                {
                scanf("%f",&Arr1[i][j]);
                }}
 break;}
 case 'N': case 'n':
   {for(i=0;i<N;i++)
            {
                for(j=0;j<M;j++)
                {
                    Arr1[i][j]=(rand()%100000)/100.f-50.F;

                    }

                }
                break;
                default:
                printf("Incorrect input\n");
                printf("Enter Y or N\n");
                break;
                }}
printf("Enter data manually M*L or automatically?\n Enter 'Y' for maneally or 'N' for automatically.\n");
scanf("%s", &vb);
switch(vb)
{
case 'Y':case 'y':
{printf("Enter data for array M*L,please");
for(i=0;i<M;i++)
            {
                for(j=0;j<L;j++)
                {
                scanf("%f",&Arr2[i][j]);
                }}
 break;}
 case 'N': case 'n':
   {for(i=0;i<M;i++)
            {
                for(j=0;j<L;j++)
                {
                    Arr2[i][j]=(rand()%100000)/100.f-50.F;

                    }

                }
                break;
                default:
                printf("Incorrect input\n");
                printf("Enter Y or N\n");
                break;
                }}
printf("Enter data manually L*K or automatically?\n Enter 'Y' for maneally or 'N' for automatically.\n");
scanf("%s", &vb);
switch(vb)
{
case 'Y':case 'y':
printf("Enter data for array L*K,please");
for(i=0;i<L;i++)
            {
                for(j=0;j<K;j++)
                {
                scanf("%f",&Arr3[i][j]);
                }}
 break;
 case 'N': case 'n':
   for(i=0;i<L;i++)
            {
                for(j=0;j<K;j++)
                {
                    Arr3[i][j]=(rand()%100000)/100.f-50.F;

                    }

                }
                break;
                default:
                printf("Incorrect input\n");
                printf("Enter Y or N\n");
                break;
                }
minarr1=mentos( N, M, *Arr1[size][size]);
minarr2=mentos( M, L, *Arr2[size][size]);
minarr3=mentos( L, K, *Arr3[size][size]);
 printf("Min of arr1=%.2f\n Min of arr2=%.2f\n Min of arr3=%.2f\n", minarr1,minarr2,minarr3);
 printf("Maximum of them - %.2f",max( minarr1, minarr2, minarr3));
 }
 }
float mentos(int u,int k,float *frk[size][size])
{
int i,j;
float prb;
prb=*frk[0][0];
for(i=0;i<u;i++)
            {
                for(j=0;j<k;j++)
                {
                    if (*frk[i][j]<prb)
                    prb=*frk[i][j];

                    }

                }

return prb;
}
float max(float a,float b,float c)
{ float max=a;
if (b>max)
max=b;
if (c>max)
max=c;
return max; }
Сильно ругайтесь... я пока что не очень в этом...

Последний раз редактировалось NNAndr; 29.11.2012 в 23:15.
NNAndr вне форума Ответить с цитированием
Старый 29.11.2012, 23:10   #4
NNAndr
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 17
По умолчанию

Покажите пожалуйста что не так...)
NNAndr вне форума Ответить с цитированием
Старый 30.11.2012, 11:58   #5
NNAndr
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 17
По умолчанию

Помогите исправить код или предложите свой.
NNAndr вне форума Ответить с цитированием
Старый 30.11.2012, 12:07   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
написал, компилятор выдает ошибки
Текст первой ошибки в студию.
Abstraction вне форума Ответить с цитированием
Старый 30.11.2012, 13:11   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Код:
minarr1=mentos( N, M, *Arr1[size][size]);
minarr2=mentos( M, L, *Arr2[size][size]);
minarr3=mentos( L, K, *Arr3[size][size]);
И далее.. Объяснитесь, зачем пытаться разыменовывать элемент матрицы-флоат? Тем более, что нету у вас таких элементов, size-1 последний индекс.
p51x вне форума Ответить с цитированием
Старый 30.11.2012, 13:29   #8
NNAndr
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 17
По умолчанию

Делал по примеру задачи написанной преподавателем, нас так учат. Я очень хочу понять как сделать, но пока 0 понимания.
NNAndr вне форума Ответить с цитированием
Старый 30.11.2012, 13:30   #9
NNAndr
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 17
По умолчанию

\Documents\Untitled189.c||In function `main':|
\Documents\Untitled189.c|112|error: invalid type argument of `unary *'|
\Documents\Untitled189.c|113|error: invalid type argument of `unary *'|
\Documents\Untitled189.c|114|error: invalid type argument of `unary *'|
\Documents\Untitled189.c|120|error: conflicting types for 'mentos'|
\Documents\Untitled189.c|4|error: previous declaration of 'mentos' was here|
\Documents\Untitled189.c|120|error: conflicting types for 'mentos'|
\Documents\Untitled189.c|4|error: previous declaration of 'mentos' was here|
||=== Build finished: 7 errors, 0 warnings ===|
Вот ошибки.
NNAndr вне форума Ответить с цитированием
Старый 30.11.2012, 14:06   #10
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
\Documents\Untitled189.c|112|error: invalid type argument of `unary *'|
Перевод:
Файл Untitled189.c, строка 112. Оператор "унарное *" применён к неверному аргументу.
Arr1 имеет тип float[100][100]. Arr1[size] имеет тип float[100]. Arr1[size][size] имеет тип float. *(Arr1[size][size]) имеет тип... э-э-э... "то, что лежит по адресу float".

Цитата:
\Documents\Untitled189.c|120|error: conflicting types for 'mentos'|
\Documents\Untitled189.c|4|error: previous declaration of 'mentos' was here|
Перевод:
Файл Untitled189.c, строка 120. Ошибка: конфликт типов при объявлении mentos. Предыдущее объявление mentos было тут: файл Untitled189.c, строка 4.
Вначале mentos была объявлена как
Код:
float mentos(int,int,float*);
То есть, функция, возвращающая float и принимающая три аргумента, типов int, int и float* (указатель на float). А в строке 120 имеем:
Код:
float mentos(int u,int k,float *frk[size][size])
Функция, возвращающая float и принимающая три аргумента, типов int, int и float*[100][100] (двумерный массив 100х100 указателей на float). И впрямь не сходится.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция min Gudzik11 Общие вопросы Delphi 6 03.05.2012 23:23
Поиск элемента в массиве методом бинарного поиска Vellosity Общие вопросы C/C++ 3 02.06.2011 21:56
функция нахождения max/min эл-та в массиве Zhenya-Pvl Паскаль, Turbo Pascal, PascalABC.NET 3 20.12.2010 14:31
Подпрограмма поиска максимального элемента одномерного массива. Viktory.nvrn Помощь студентам 2 12.10.2010 23:50
Функция маx и min! Чешитепузо Помощь студентам 2 27.03.2009 16:21