• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Двумерные массивы

  • Автор темы Rivass
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Rivass

Последняя задача на массивы из моей лабы) Проблема в том, что я не могу сделать так, чтобы цикл перебирал все элементы выше главной диагонали, и именно для матриц любого размера....
По моему коду, программа будет перебирать элементы выше главной диагонали, но только в первой строке, а дальше он вылезет за пределы.... Прошу помочь разобраться....
Текст задачи:
Вводится квадратная матрица целых чисел A размером N, а также целое число K. Проверить наличие среди элементов, стоящих выше главной диагонали, элементов меньших K (вывести yes, если такие элементы имеются, иначе вывести no).
C++:
#include<stdio.h>
int a[50][50],n,m,k,i,j,s;
void main(){
scanf_s ("%d%d%d",&n,&m,&k); 
for (i=0; i<n; i++)
for (j=0; j<m; j++)
scanf_s("%d",&a[i][j]);
for(i=0,j=1;j<m;j++)
{
if(a[i][j]<k)
s=1; break;
}
if (s==1)
printf("yes");
else
printf("no");
}
 
R

Rivass

rrrFer
По заданию написано что матрица квадратная, видимо забыли дописать что она размером NxM ,а не только N)
Пример:
Ввод:
C++:
N=3 M=3 K=4
Matrix
0 1 2
3 4 5
6 7 8
Вывод:
C++:
Yes
 
R

Rivass

Спасибо большое за код... Но я не совсем понял кое что:
C++:
for(i=0;i<n;i++)
if(a[i][i]==k) //здесь сравнивается К с главной диагональю?
break;
 
R

Rivass

Может я не правильно понимаю, но вы написали программу которая будет проверять есть ли среди элементов главной диагонали элементы меньше К) Наверное это легче чем найти элементы выше главной диагонали которые будут меньше чем К... У меня к сожалению второй случай не получается, первый получается))
 
R

Rivass

Не знаю как написать подругому... Моя программа будет все считать правильно но для матриц не более чем 3 на 3, а нужна универсальная....
C++:
#include<stdio.h>
int a[50][50],n,m,k,i,j,s,z;
void main(){
scanf_s ("%d%d%d",&n,&m,&k); 
for (i=0; i<n; i++)
for (j=0; j<m; j++)
scanf_s("%d",&a[i][j]);
for(i=0,j=1;j<m;j++)
{
if(a[i][j]<k)
s=1; 
if(a[i][j]>=k)
z=0;
}
for(i=1,j=2;j<m;j++)
{
if(a[i][j]<k)
s=1;
if(a[i][j]>=k)
z=0;
}
if (s==1)
printf("yes");
else
printf("no");
}
 
R

Rivass

Спасибо большое. Я дочитал до конца ваш ответ, даже вставил код в свою программу
C++:
#include<stdio.h>
int a[50][50],n,m,k,i,j,s,z;
void main(){
scanf_s ("%d%d%d",&n,&m,&k); 
for (i=0; i<n; i++)
for (j=0; j<m; j++)
scanf_s("%d",&a[i][j]);
for(i=0;i<n;i++){
for(j=i;j<n;j++)
if(a[i][j]<k)
break;
if(j<n)
break;
}
printf("%s",(i==n?"no":"yes"));
}
Но
Ввод:
C++:
N=4 K=4
matrix
5 5 5 5
5 5 5 5
5 5 5 5
5 5 5 1
Вывод:
C++:
Yes
Поидее так не должно быть, может я что-то не так сделал, посмотрите пожалуйста мой код....
 
R

Rivass

Всё, дошло, использовал вложенный цикл, вот как получается:
C++:
#include<stdio.h>
int main(){
int n,m,k,s=0;
scanf("%d%d%d",&n,&m,&k); 
int a[50][50];
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
scanf("%d",&a[i][j]);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]<k && j>i)
s=1; break;
}
}
if (s==1)
printf("yes");
else
printf("no");
}
 
R

Rivass

rrrFer
Оказывается с break программа работает неправильно) Пришлось полностью убрать все break'и. Программа заработала корректно))
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!