Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2010, 23:02   #1
Rivass
 
Регистрация: 05.11.2010
Сообщений: 6
Печаль Немного сложноватая задача на Массив 2д

Всё вроде сделал как надо, но моя программа не универсальна, а решает только с матрицами не более 3 на 3, помогите сделать универсальной пожалуйста.
Текст задачи:
Вводится квадратная матрица целых чисел A размером NхM, а также целое число K. Проверить наличие среди элементов, стоящих выше главной диагонали, элементов меньших K (вывести yes, если такие элементы имеются, иначе вывести no).
Вот что у меня получилось:
Код:
#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");
}
Rivass вне форума Ответить с цитированием
Старый 05.11.2010, 23:26   #2
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
Вводится квадратная матрица целых чисел A размером NхM
Это как? Может быть NxN?
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 05.11.2010, 23:30   #3
Rivass
 
Регистрация: 05.11.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Sam Gold Посмотреть сообщение
Это как? Может быть NxN?
Возможно и NxN, опечатка, но если N=M, то матрица квадратная
Rivass вне форума Ответить с цитированием
Старый 05.11.2010, 23:41   #4
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
Возможно и NxN, опечатка, но если N=M, то матрица квадратная
Так в задании и сказано, что она квадратная
Как-то так будет
Код:
int main(){
	int n,m,k,s=0;
	
	scanf("%d%d%d",&n,&m,&k); 
	int a[n][m];

    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; 
                 }
    }
   
  
    if (s==1)
    printf("yes");
    else
    printf("no");
    
    return 0;
}
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 06.11.2010, 00:21   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
s=1;
в принципе, в этом месте уже можно делать break и прерывать цикл, перебирать остальные элементы смысла уже нет.

Хотя, конечно, это повлияет только на оптимальность работы алгоритма (на пару десятков наносекунд будет быстрее программа работать в некоторых случаях )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.11.2010, 00:24   #6
Rivass
 
Регистрация: 05.11.2010
Сообщений: 6
По умолчанию

Боьшое спасибо, теперь врубился)) Надо было додуматься использовать вложенный цикл)
Rivass вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на массив. spankyham Помощь студентам 6 15.04.2009 16:41
Задача на массив! Fatality Помощь студентам 1 09.04.2009 10:04
Задача на массив KARUSHEV Помощь студентам 1 02.04.2009 09:42
Задача на массив Юрии Александрович Паскаль, Turbo Pascal, PascalABC.NET 5 08.12.2007 15:32
Задача на массив. ErMaKiim Помощь студентам 2 29.11.2007 19:42