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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2014, 21:42   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Счетный цикл, подобный downto в делфи

Здравствуйте, у меня есть задача, в которую нужно прописать обратный цикл, задача звучит следующим образом, код привел ниже:

Дана квадратная матрица натуральных чисел (получаемая через rand()). Определить верно ли утверждение: сумма элементов каждого j-го столбца матрицы меньше сумм (j-1) столбца

вот тут не получается

Код:
    for (int j=m;J>=m;j=j-1)
,

вот полный код

Код:
#include <QCoreApplication>
#include <ctime>
#include <qmath.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    
    //задаем размерность
    
    printf("Zadaite razmernost matreici: STROKI STOLBCI....\n ");
    int m,n;
    scanf("%d %d",&n,&m);
    
    srand(time(NULL));//рандом по времени (вроде)
    
    
    int a1[n][m]; //объявляем целый массив
    
    //два цикла рандомного заполнения строки и столбца
    
    int summ1=0,summ2=0;
    
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
            a1[i][j]=rand()%180;
    
    // суммируем и проверяем
    
    //
    bool x=false;
    m++;
    for (int i=0;i<n;i++)
    {
        for (int j=m;J>=m;j=j-1)
        {   summ1+=a[i][j];
            if (j>0) summ2+=a[i][j-1];
            
        }
        
        if (summ1<summ2) x=true;
        else
            x=false;
        
        summ1=0;
        summ2=0;
        
    }
    
    
    if (x) printf("YTVERGENIE VERNO");
    else
        Printf("NEVERNO");
    
    
    return a.exec();
}
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 03.11.2014, 21:47   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Если говорить только о способе описания цикла, но не о правильности реализации самой задачи, то for (int j = m - 1; j >= 0; --j).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 03.11.2014, 21:54   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Спасибо, но теперь ругается на последнюю строчку, а как будет более правильно решить задачу? я понял ее так, допустим проверить: является ли матрица такой:

4 4 4 4 4
3 3 3 3 3
2 2 2 2 2
1 1 1 1 1 , если да, то вывести соответствующее сообщение, вроде все так должно работать
Изображения
Тип файла: jpg Безымянный.jpg (5.7 Кб, 129 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 03.11.2014, 22:01   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

1) Ругается, потому что си регистрозависимый язык (printf <> Printf)
2) Двояко трактую условие:
Если оно "сумма элементов каждого j-го столбца матрицы меньше сумм столбцов", то:
3 2 1
3 2 1
3 2 1
суммы:
9 6 3
6 < 9
3 < 6 + 9

Если же оно "сумма элементов каждого j-го столбца матрицы меньше суммы (j-1) столбца", то:
1 2 1
2 2 1
3 1 2
суммы:
6 5 4
5 < 6
4 < 5

Для второго варианта решение:
Код:
bool fl = true;
for (j = 0; fl && j < m; ++j) {
    sum2 = 0;
    for (int i = 0; i < n; ++i)
        sum2 += a[i][j];
    if (j > 0)
        fl = (sum2 < sum1);
    sum1 = sum2;
}
if (fl)
    printf("TRUE");
else
    printf("FALSE");
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 03.11.2014 в 22:07.
BDA вне форума Ответить с цитированием
Старый 03.11.2014, 22:29   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

BDA, спасибо, как всегда выручили, вот немного переделал и добавил вывод суммы.
Код:
#include <QCoreApplication>
#include <ctime>
#include <qmath.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    
    //задаем размерность
    
    printf("Zadaite razmernost matreici: STROKI STOLBCI....\n ");
    int m,n;
    scanf("%d %d",&n,&m);
    
    srand(time(NULL));//рандом по времени (вроде)
    int a1[n][m]; //объявляем целый массив
    //два цикла рандомного заполнения строки и столбца
    printf("\n");
    
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
        {
            a1[i][j]=rand()%180;
            printf("%d         ",a1[i][j]);
        }
        printf("\n");
    }
    
    int sum1=0,sum2=0,j=0;  
    
    
    // суммируем и проверяем
    int b[m];// массив для вывода суммы
    bool fl = true;
    for (j = 0; fl && j < m; ++j) {
        sum2 = 0;
        for (int i = 0; i < n; ++i)
            sum2 += a1[i][j];
        if (j > 0)
            fl = (sum2 < sum1);
        sum1 = sum2;
        b[j]=sum2;
    }
    
    
    
    if (fl)
    {
        printf("TRUE\n");
        for (int i=0;i<j;i++)
            printf("%d \n",b[i]);
    }
    else
        printf("FALSE");
    
    
    return a.exec();
}
Изображения
Тип файла: png Безымянный.png (60.2 Кб, 46 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цикл в делфи angelap Помощь студентам 7 27.06.2013 12:40
Как реализовать подобный интерфейс средствами Делфи без скачки доп. модулей? pashka_dos Помощь студентам 6 19.10.2012 20:45
не правильно составлена цикл? делфи lisa007x Помощь студентам 4 06.10.2010 18:04
цикл в делфи Яська Помощь студентам 7 26.09.2010 15:25
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34