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

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы 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'и. Программа заработала корректно))
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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