Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Наибольший из элементов матрицы (ниже главной диагонали) (Си)

16K
17 августа 2007 года
Draconit
39 / / 10.08.2007
Задача: Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных ниже главной диагонали. Должны быть функции отдельно реализующие ввод (если есть), расчет, и вывод. Матрицы передаются в качестве параметров функций.

Вот решение:
Код:
#include <stdio.h>;
#include <conio.h>;
#include <math.h>;
int n;
typedef long int a[100][100];
a mat;
long int max;
int vvod(a mv,int n)
{
 int i,j;
 randomize();
 for(i=1;i<=n;i++)
  for(j=1;j<=n;j++)
   mv[j]=random(100)-50;
}

int raschet(a mv,int n)
{
 int i,j;
 long int mix;
 mix=mv[1][1];
 for(i=1;i>=j;i++)
  for(j=1;j<=i;j++)
  if(mv[j]>=mix) mix=m[j];
  return mix;
}

int vivod(a mv,int n)
{
 int i,j;
 for(i=1;i<=n;i++)
  {
   for(j=1;j<=n;j++)
   printf("%i ",mv[j]);
   printf("\n");
  }
}

void main()
{
 clrscr();
 puts("Vvedite n");
 scanf("%i\n",&n);
 vvod(mat,n);
 puts("Dana matrica:");
 vivod(mat,n);
 max=raschet(mat,n);
 printf("Makcimalnii element=%i",max);
 getch();
}


Подскажите пожалуйста в чем ошибка (к примеру при компиляции, показывает что ошибка в randomize(), но я не вижу в чем она), может я как то неправильно функции написал, т.к. я их недавно начал изучать.
320
17 августа 2007 года
m_Valery
1.0K / / 08.01.2007
1.В FAQ раздела Студентам есть создание динамического двумерного массива. Mассив должен быть динамическим.
2.Подобные задача неоднократно решали.Поищи.
3.В твоем коде ф-ии int vvod(a mv,int n) и int vivod(a mv,int n) должны возращать значения.Посмотри в том же FAQ Студентам как руссифицироввать консоль.Что это за vvod-vivod ?;) Тогда уж давай функциям английские названия.
P.S. Создай для начала сам правильно двумерный динамический массив. Ты ж ничего не поймешь без этого.;)
2.0K
17 августа 2007 года
WidowMaker
212 / / 05.04.2005
Цитата: Draconit

Подскажите пожалуйста в чем ошибка (к примеру при компиляции, показывает что ошибка в randomize(), но я не вижу в чем она), может я как то неправильно функции написал, т.к. я их недавно начал изучать.


Если ты говоришь об ошибке, то хоть приведи текст сообщения компилятора;)

16K
19 августа 2007 года
Draconit
39 / / 10.08.2007
Вот переделал, вроде правильно:
Код:
#include <stdio.h>;
#include <conio.h>;
#include <stdlib.h>;
int n,max,i,j;
int a[100][100];
void vvod(int a[100][100])
{
 for(i=1;i<=n;i++)
 {
  for(j=1;j<=n;j++)
   {
    a[j]=random(100)-50;
   }
 // puts("");
 }
}

void raschet(int a[100][100])
{
 max=a[1][1];
 for(i=1;i<=n;i++)
  for(j=1;j<=i;j++)
  if( a[j] > max) max=a[j];
}

void vivod(int a[100][100])
{
 for(i=1;i<=n;i++)
 {
  for(j=1;j<=n;j++)
  printf("%i ",a[j]);
  printf("\n");
 }
}

void main()
{
 clrscr();
 puts("Введите n");
 scanf("%i\n",&n);
 randomize();
 vvod(a);
 puts("Дана матрица:");
 vivod(a);
 raschet(a);
 printf("Максимальный элемент=%i",max);
 getch();
}


Только когда я запускаю задачу и ввожу n, программа ждет ввода ещё одного числа - любого, и потом уже она выводит квадратную матрицу размером n (вне зависимости от того какое я ввел второе число) и находит максимальное число. И я не могу найти, почему ей нужно ввести ещё одно число, помогите найти.
2.0K
19 августа 2007 года
WidowMaker
212 / / 05.04.2005
 
Код:
void main()
{
 clrscr();
 puts("Введите n");
[COLOR=red]scanf("%i",&n);[/COLOR]
...
16K
19 августа 2007 года
Draconit
39 / / 10.08.2007
to WidowMaker точно :) спасибо
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог