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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2019, 21:09   #11
Cyber321
Новичок
Джуниор
 
Регистрация: 17.09.2018
Сообщений: 49
По умолчанию

Что-то не очень понятно.
Cyber321 вне форума Ответить с цитированием
Старый 20.03.2019, 21:24   #12
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Что не понятно? Простой вопрос: что будет выполнятся в цикле, а что нет?
p51x вне форума Ответить с цитированием
Старый 20.03.2019, 21:25   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Cyber321 Посмотреть сообщение
Что-то не очень понятно.
внутри циклов for можете обращаться к переменным i и j
после того, как цикл закончился, к этим переменным обращаться не нужно (читать из них не надо - считайте, что там мусор).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.03.2019, 21:34   #14
Cyber321
Новичок
Джуниор
 
Регистрация: 17.09.2018
Сообщений: 49
По умолчанию

Код:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
 
using namespace std;
int main()
 
{
    setlocale(LC_ALL, "rus");
    srand((unsigned)time(NULL));
    int n, m, i, j;
    cout << "Ввод кол-во элементов в строке: \n";
    cin >> m;
    cout << "Ввод кол-во элементов в столбце: \n";
    cin >> n;
    //создаем, инициализируем и выводим на печать матрицу
    int** a = new int*[n];
    for (i = 0; i < n; i++) {
        a[i] = new int[m];
        for (j = 0; j < m; j++)
        {
            if (i % 2 == 0)
                a[i][j] = (rand() % 100);
            else
                a[i][j] = ((rand() % 200) - 100);
            cout << setw(4) << a[i][j];
        }
        cout << endl;
    }
    //удаляем матрицу
    for (i = 0; i < n; i++)
        delete a[i];
    delete a;
    return 0;
}
Я немного обновил код.

Цитата:
Сообщение от p51x Посмотреть сообщение
Простой вопрос: что будет выполнятся в цикле, а что нет?
Но на этот вопрос я глючу, я знаю что это очень простой вопрос
Cyber321 вне форума Ответить с цитированием
Старый 20.03.2019, 21:36   #15
Cyber321
Новичок
Джуниор
 
Регистрация: 17.09.2018
Сообщений: 49
По умолчанию

Ага, так я понял спасибо
Cyber321 вне форума Ответить с цитированием
Старый 21.03.2019, 09:25   #16
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Какой компилятор у Вас? Скажите, пожалуйста.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 21.03.2019, 09:29   #17
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Цитата:
Сообщение от Cyber321 Посмотреть сообщение
Код:
if(i % 2 == 0)
- этот код нужно заменить на другой. Здесь написано проход только четным строкам, Вам нужно пройти по строкам и выделить те строки, в которых число отрицательных элементов
>3. Потом эти строки нужно умножить на 2.
Как-то так что-ли:
Код:
int Counter;

for(i = 0; i < n; i++)
{
        a[i] = new int[m];
        Counter = 0;
        for(j = 0; j < m; j++)  //проход по столбцам
        {
            a[i][j] = (rand()%200) - 100;                                    
            cout << a[i][j] << "\t";
            if(a[i][j] < 0) Counter++;      
        }
        cout << "\n";
        if(Counter > 3)
            for(j = 0; j < m; j++)  //проход по столбцам            
                a[i][j] *= 2;
}

cout << "\nВывод нового массива:\n";
for(i = 0; i < n; i++)
{                
        for(j = 0; j < m; j++)                  
            cout << a[i][j] << "\t";
        cout << "\n";
}
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.

Последний раз редактировалось Cuprum5; 21.03.2019 в 09:36. Причина: Добавил код.
Cuprum5 вне форума Ответить с цитированием
Старый 21.03.2019, 10:23   #18
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Уберите i,j из сверху и объявите их в форе:
Код:
    for(int i=0; i<n; i++)
    for(int j=0; j<m; j++)
Я в С++ почти никак, но в обычном Си в качестве парамеетра цикла использовать глобальные переменные - ничего страшного не случится. Вот в Дельфи, действительно, они должны быть объявлены в той процедуре, в которой используются. И в С++ тоже так ? Т.е. это просто "некрасиво" - или не будет работать ?
ТС, думаю, не будет на меня в обиде за вопрос - почитает ответ и сам почерпнет.

Последний раз редактировалось digitalis; 21.03.2019 в 10:30.
digitalis вне форума Ответить с цитированием
Старый 21.03.2019, 10:45   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Я в С++ почти никак, но в обычном Си в качестве парамеетра цикла использовать глобальные переменные - ничего страшного.
для меня тоже C++ "не родной".
Но я могу пояснить, для чего p51x предложил объявить переменные непосредственно в цикле for:
автор топика просто ошибочно использовал обращение к переменным цикла ЗА пределами цикла. Так делать нельзя.
и, если бы автор объявил переменные цикла не глобально, а внутри for,
тогда строчка с обращением к этим переменным, которая ошибочно вынесена за пределы цикла сразу бы выдала ошибку.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.03.2019, 11:00   #20
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Т.е. это просто "некрасиво" - или не будет работать ?
Раньше в С, действительно, надо было объявлять все переменные в начале функции. В более свежих стандартах пошли по философии С++ - объявлять переменные желательно как можно ближе к моменту первого использования.
Работать и там, и там это будет нормально, если помнить про все +/- "глобальных" переменных.

А по теме: Serge_Bliznykov уже все сказал, ТС направльно скопипастиль щаблон и просто ткнул скобку в конце, чтоб компилятор не ругался, а то, что все работает совсем не так - другой вопрос.
p51x вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача с матрицОй ) Ponch_Begginer Помощь студентам 8 08.11.2015 16:42
Работа с матрицой vampir3001 Помощь студентам 1 19.12.2011 20:01
Работа с матрицой (Си) Roll1n Общие вопросы C/C++ 1 20.04.2010 21:28
Задача с матрицой maziLa Помощь студентам 1 09.02.2009 01:54