#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;
}
Задача на массивы,ошибка!
Добрый вечер.задача такая:создать двумерный массив n*m типа int,элементы задаются rand,создать одномерный массив,размерностью в количество строк двумерного массива,и значения должны быть минимальными значениями в соответствующей строке двумерного массива.Не пойму где ошибка,во второй масиив пишет вообще невесть откуда взятые значения...Заранее спасибо.
не поймешь, тогда обращайся :)
при написании кода программы используй тэги code
[color=blue][ code ] [ /code ] [/color]
Все равно не пойму,одну ошибку я отыскал,второй массив формируется неверно,просто у меня удачно переменные строки и кол-ва элементов выбраны,сначала вообще была мысль на этапе формирования массива в первом цикле сразу искать минимальный элемент и записывать в массив, но не догоню как.Вот такая вот петрушка,я только учусь...
Код:
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];
}
{
int* b = &arr[0];
int min = 0;
for(int j = 1;j < alm; j++)
{
if(b[j]<b[min]) min =j;
}
arr1=b[min];
}
Код:
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;
}
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;
}
#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;
}
Цитата:
Originally posted by BroKeR
Код:
#define stop __asm nop
Цитата:
Originally posted by Damarus
Я только не понял, зачем вот это:
Я только не понял, зачем вот это:
это чтобы в отладчике проверить значения массива,всем огромное спасибо!