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

Тема в разделе "C/C++/C#", создана пользователем Rivass, 5 ноя 2010.

Статус темы:
Закрыта.
  1. Rivass

    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");
    }
     
  2. Rivass

    Rivass Гость

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

    Rivass Гость

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

    Rivass Гость

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

    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");
    }
     
  6. Rivass

    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
    Поидее так не должно быть, может я что-то не так сделал, посмотрите пожалуйста мой код....
     
  7. Rivass

    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");
    }
     
  8. Rivass

    Rivass Гость

    rrrFer
    Оказывается с break программа работает неправильно) Пришлось полностью убрать все break'и. Программа заработала корректно))
     
Загрузка...
Похожие Темы - Двумерные массивы
  1. Rpp
    Ответов:
    1
    Просмотров:
    811
  2. Малгано
    Ответов:
    0
    Просмотров:
    1.290
  3. 203
    Ответов:
    12
    Просмотров:
    2.449
  4. SchwarzeWolfin
    Ответов:
    3
    Просмотров:
    2.501
  5. Искушенный
    Ответов:
    0
    Просмотров:
    432
Статус темы:
Закрыта.

Поделиться этой страницей