• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Двумерный массив в C++

Регистрация
13 Май 2011
Сообщения
49
Реакции
0
Баллы
0
Двумерный массив в 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];
int max;

clrscr();

randomize();

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

printf("%4.1d |", Array[j]);
}
}
printf("\n ----------------------------------\n");
for (i=0; i<n; i++)
{
for (j=0;j<b;j++)
{
if (Array[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[j])
{
max=Array[j];
}
else
max=max;
}
//}
printf("\n max%i ",max);
getch();
}
ввел массив, а получить "координаты" именно первого положительного элемента не могу( получается либо в первом столбце все "+", либо в строке все"+"....и с мах та же проблема...как работать именно с отдельной строкой или столбцом?
 
Ну во-первых
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 - не имеет смысла.
Собственно, код рабочий, но "на скорую руку".
 
Назад
Сверху