Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Двумерный массив в C++ (http://www.tehnari.ru/f41/t79245/)

Андрей Романюк 11.10.2012 19:31

Двумерный массив в C++
 
ЗАДАЧА:
Заполнить двумерный числовой массив В(4, 6) целыми числами. Найти первый положительный элемент массива и номер строки и столбца, где он находится. Затем найти и вывести на экран максимальные элементы каждой строки массива.
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
void main()
{
int const n=4,b=6;
int i,j, Array[n][b];
int max;

clrscr();

randomize();

for (i=0; i<n; i++)
{
printf("\n");
printf(" ----------------------------------\n");
for (j=0;j<b;j++)
{
Array[i][j]= -10+int(20*float(random(n))/float(n-1));

printf("%4.1d |", Array[i][j]);
}
}
printf("\n ----------------------------------\n");
for (i=0; i<n; i++)
{
for (j=0;j<b;j++)
{
if (Array[i][j]>0)
{
printf("\n%i-stroka",i+1);
printf("\n%i-stolbec",j+1);

}
break;
}

}
max=Array[0][0];
/* for (i=0; i<n; i++)
{ */
for (j=0;j<b;j++)
{ 
if (max<Array[i][j])
{
max=Array[i][j];
}
else
max=max;
}
//}
printf("\n max%i ",max);
getch();
}
ввел массив, а получить "координаты" именно первого положительного элемента не могу( получается либо в первом столбце все "+", либо в строке все"+"....и с мах та же проблема...как работать именно с отдельной строкой или столбцом?

Fenix 12.10.2012 07:39

Ну во-первых
max=max; - вообще убило.
Компилятор Dev-Cpp
Код:

#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#define N 4
#define B 6

int main()
{
 int i,
    j,
    Array[N][B];
 int max;

 //заполнение
 for (i=0;i<N;i++)
 {
  printf("\n ----------------------------------\n");
  for (j=0;j<B;j++)
  {
  Array[i][j]= -10+rand()%20;
  printf("%4d |", Array[i][j]);
  }
 }

 //нахождение максимальных
 printf("\n ----------------------------------\n");
 for (i=0;i<N;i++)
 {
  max=Array[i][0];
  for (j=0;j<6;j++)
  {
  if(Array[i][j]>max)
    max=Array[i][j];
  }
  printf("\nmax in %d-row: %d",i+1,max);
 }

 //первый положительный
 int pos=0;
 for(i=0;i<N;i++)
 {
  for(j=0;j<B;j++)
  if (Array[i][j]>0)
  {
    printf("\n1-st positive element: %d (%d-row; %d-col)",Array[i][j],i+1,j+1);
    pos=1;
    break;
  }
  if(pos==1)
  break;
 }     

getch();
}

При желании поиск максимальных можно внести в цикл заполнения.
Для целочисленных не надо писать %3.1d, так как часть .1 - не имеет смысла.
Собственно, код рабочий, но "на скорую руку".

Андрей Романюк 13.10.2012 21:25

спасибо большое)


Часовой пояс GMT +4, время: 03:53.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.