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

Ваш аккаунт

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

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

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

Как найти наименьший элемент в двумерном массиве

4.8K
29 октября 2006 года
anty
89 / / 29.10.2006
Задание такое:

Написать программу которая находит наименьший элемент массива и на его значение разделить каждый элемент массива. Двумерный массив.
(должнa быть написанна на языке С++ в консольном приложение Borland C++ Builder)
Буду рад любой помощи! =)
19K
29 октября 2006 года
Чубз
13 / / 24.10.2006
Код:
#include <iostream>


using namespace std;

const int N = 2;
const int M = 3;

double FindMin (double** array)
{
  double min = array[0][0];

  for(int i = 0; i < N; i++)
  {
    for(int j =0; j< M; j++)
    {
      if(array[j] < min)
      {
        min = array[j];
      }
    }
  }
  return min;
}

int main(int argc, char argv[])
{
  double** array;
  double min;
 
  array = (double**)malloc(N*sizeof(double*));
  for(int i = 0; i < N; i++)
    array = (double*)malloc(M*sizeof(double));

  for(int i = 0; i < N; i++)
  {
    for(int j = 0; j < M; j++)
    {
      cout << "\narray[" << i << "][" << j << "] -> ";
      cin >> array[j];
    }
  }

  min = FindMin(array);

  for(int i = 0; i < N; i++)
  {
    for(int j = 0; j < M; j++)
    {
      array[j] = array[j] / min;
    }
  }

  for(int i = 0; i < N; i++)
  {
    for(int j = 0; j < M; j++)
    {
      cout << "\narray[" << i << "][" << j << "] -> " << array[j];
    }
  }
 
  return 0;
}
8.9K
29 октября 2006 года
Kulti
77 / / 29.07.2006
Опять не успел :) Тока дописал код, а тут уже и без меня справились...
4.8K
30 октября 2006 года
anty
89 / / 29.10.2006
а по проще можно написать ?? =)
19K
30 октября 2006 года
Чубз
13 / / 24.10.2006
В смысле попроще?:confused:
242
30 октября 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
В смысле попроще?:confused:


возможно не стоит пользоваться диномически созданным массивом.

прежде чем делить все элементы массива на найденный min, стоит проверить что он не ноль, имхо.

4.8K
30 октября 2006 года
anty
89 / / 29.10.2006
[QUOTE=OlgaKr]возможно не стоит пользоваться диномически созданным массивом.

прежде чем делить все элементы массива на найденный min, стоит проверить что он не ноль, имхо.[/QUOTE]
Точно! Я об этом даже и не думал =)
Седня узнал у препода, что нельзя использовать указатели..., только при помощи циклов =\
19K
30 октября 2006 года
Чубз
13 / / 24.10.2006
Вот переделал :)
Код:
/*******************************************************/

#include <iostream>
#include <conio.h>

/*******************************************************/

using namespace std;

/*******************************************************/

const int N = 3;
const int M = 4;

/*******************************************************/

int main()
{
   double array[N][M];
   double min;
   
   for(int i = 0; i < N; i++)
   {
      for(int j = 0; j < M; j++)
      {
         cout << "\narray[" << i << "][" << j << "] -> ";
         cin >> array[j];
      }
   }
   
   min = array[0][0];
   for(int i = 0; i< N; i++)
   {
      for(int j = 0; j < M; j++)
      {
         if(array[j] == 0) continue;
         if(min > array[j]) min = array[j];
      }
   }
   
   for(int i = 0; i < N; i++)
   {
      for(int j = 0; j < M; j++)
      {
         array[j] /= min;
      }
   }
   
   for(int i = 0; i < N; i++)
   {
      for(int j = 0; j < M; j++)
      {
         cout << "\narray[" << i << "][" << j << "] -> " << array[j];
      }
   }

   char cQuit;
   while(cQuit != char(27))
   {
      cout << "\nPress ESC to exit...";
      cQuit = getche();
   }
   return 0;
}

/*******************************************************/
19K
30 октября 2006 года
Чубз
13 / / 24.10.2006
[QUOTE=OlgaKr]
прежде чем делить все элементы массива на найденный min, стоит проверить что он не ноль, имхо.
[/QUOTE]
Спасибо, я это не учел, но теперь исправил
63
04 ноября 2006 года
Zorkus
2.6K / / 04.11.2006
[QUOTE=anty]
Седня узнал у препода, что нельзя использовать указатели..., только при помощи циклов =\[/QUOTE]
какая между ними связь?:)
4.8K
05 ноября 2006 года
anty
89 / / 29.10.2006
[QUOTE=Zorkus]какая между ними связь?:)[/QUOTE]
ну минимальный можно найти и так и с помощью указателей =\
4.8K
02 декабря 2006 года
anty
89 / / 29.10.2006
насчет этого задания я уже спрашивал, но следущая лаба посложней. Для массива нужна использовать динамическую память(т.е. строки и столбцы задавать уже в самой программе).

Написать программу которая находит наименьший элемент массива и на его значение разделить каждый элемент массива. Двумерный массив.

Это воод массива, но при выводе элементов t[j] выводит тока последнюю строку которую заполняю, а при записи t[j] выдает ошыбку. Где моя ошыбка? :confused:

{
float *t;
int i,j;
t=(float*)malloc(a*b*sizeof(float));
for(i=0;i<a;i++)
{for(j=0;j<b;j++)
printf("x[j]=",i,j);
scanf("%f",&t[j]);}}
9.5K
02 декабря 2006 года
ROLpogo
80 / / 22.08.2006
Код:
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>

float GetMinElement(float **t, int a, int b)
{
  float MinValue = t[0][0];
  for (int i = 0; i < a; i++)
    for (int j = 0; j < b; j++)
      if ( MinValue > t[j] )
        MinValue = t[j];
  return MinValue;
}

void main()
{
  float  **t;
  int      i, j, a, b;

  printf("a = ");
  scanf("%i", &a);
  printf("b = ");
  scanf("%i", &b);
  printf("\n");

  t = (float**)malloc( a * sizeof(float*) );
  for (i = 0; i < a; i++)
    t = (float*)malloc( b * sizeof(float) );

  for (i = 0; i < a; i++)
    for (j = 0; j < b; j++)
    {
      printf("x[%i][%i] = ", i, j);
      scanf("%f", &t[j]);
    }

  printf("\nDim before calculate:\n");
  for (i = 0; i < a; i++)
    for (j = 0; j < b; j++)
      printf("x[%i][%i] = %f\n", i, j, t[j]);

  float MinElem = GetMinElement(t, a, b);
  if ( MinElem != 0. )
    for (i = 0; i < a; i++)
      for (j = 0; j < b; j++)
        t[j] /= MinElem;

  printf("\nMin Element is: %f\n", MinElem);
  printf("\nDim after calculate:\n");
  for (i = 0; i < a; i++)
    for (j = 0; j < b; j++)
      printf("x[%i][%i] = %f\n", i, j, t[j]);

  for (i = 0; i < a; i++)
    free( t );
  free(t);
  getch();
}
242
02 декабря 2006 года
Оlga
2.2K / / 04.02.2006
2 anty
а чем решение Чубз тебя не устроило?
и зачем создавать новую тему, надо было продолжать старую.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог