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

Ваш аккаунт

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

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

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

Задача на массивы,ошибка!

2.0K
14 мая 2006 года
BroKeR
163 / / 04.05.2006
Добрый вечер.задача такая:создать двумерный массив n*m типа int,элементы задаются rand,создать одномерный массив,размерностью в количество строк двумерного массива,и значения должны быть минимальными значениями в соответствующей строке двумерного массива.Не пойму где ошибка,во второй масиив пишет вообще невесть откуда взятые значения...Заранее спасибо.
Код:
#include <iostream>
#include <cstdlib>


#define stop __asm nop


int main()
{
    const int str=7,alm=8;
    int arr[str][alm];
    int arr1[str];
    for (int i=0;i<str;i++)//формирование массива
    {
        for (int j=0;j<alm;j++)
        {
            arr[j]=std::rand()%201-100;
        }
    }
    for(int l=0;l<str;l++)
    {
        int* b=&arr[l][0];//указатель на первый элемент массива

        for(int i=0;i<alm-1;i++)//поиск минимального значения строки массива
        {
            int min=i;
            for(int j=i+1;j<alm;j++)
            {
                if(b[j]<b[min]) min =j;//изменеие указателя на мин элемент строки
            }
            arr1=b[min];//присвоение значения I элементу массива arr1
        }
    }

    stop
    return 0;
}
242
14 мая 2006 года
Оlga
2.2K / / 04.02.2006
напиши коментарии к коду и много шансов что сам поймешь ошибку
не поймешь, тогда обращайся :)

при написании кода программы используй тэги code
[color=blue][ code ] [ /code ] [/color]

2.0K
14 мая 2006 года
BroKeR
163 / / 04.05.2006
Все равно не пойму,одну ошибку я отыскал,второй массив формируется неверно,просто у меня удачно переменные строки и кол-ва элементов выбраны,сначала вообще была мысль на этапе формирования массива в первом цикле сразу искать минимальный элемент и записывать в массив, но не догоню как.Вот такая вот петрушка,я только учусь...
242
15 мая 2006 года
Оlga
2.2K / / 04.02.2006
 
Код:
for(int i = 0; i < str; i++)
{
  int* b = &arr[0];
  int min = 0;
  for(int j = 1;j < alm; j++)
  {
    if(b[j]<b[min]) min =j;
  }
  arr1=b[min];
}

9.4K
15 мая 2006 года
_nоrth_
99 / / 24.04.2006
Более эффективный код;
Код:
int* b = &arr[0][0];
for(int i = 0; i < str; i++)
{
  int min=*b;  
  b++;
  for(int j=1; j<alm; j++)
  {
    if(*b<min)min=*b;
    b++;
  }
  arr1=min;
}


2BroKeR В твоем коде 3 ошибки
1. Цикл for(int i=0;i<alm-1;i++) не нужен
2. int min=0; // вместо int min=i;
3. for(int j=[color=red]1[/color];j<alm;j++)

т.е.
Код:
#include <iostream>
#include <cstdlib>


#define stop __asm nop


int main()
{
    const int str=7,alm=8;
    int arr[str][alm];
    int arr1[str];
    for (int i=0;i<str;i++)//формирование массива
    {
        for (int j=0;j<alm;j++)
        {
            arr[j]=std::rand()%201-100;
        }
    }
    for(int l=0;l<str;l++)
    {
        int* b=&arr[l][0];//указатель на первый элемент массива

        int min=0;
        for(int j=1;j<alm;j++)
        {
           if(b[j]<b[min]) min =j;//изменеие указателя на мин элемент строки
        }
        arr1[l]=b[min];//присвоение значения I элементу массива arr1
    }

    stop
    return 0;
}
9.5K
15 мая 2006 года
Damarus
101 / / 08.04.2006
Я только не понял, зачем вот это:
Цитата:
Originally posted by BroKeR
 
Код:
#define stop __asm nop

2.0K
15 мая 2006 года
BroKeR
163 / / 04.05.2006
Цитата:
Originally posted by Damarus
Я только не понял, зачем вот это:



это чтобы в отладчике проверить значения массива,всем огромное спасибо!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог