Форум программистов, компьютерный форум CyberForum.ru

Упростить код - C++

Восстановить пароль Регистрация
 
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 233
28.02.2014, 11:15     Упростить код #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    size_t rowsCount;
    cout << "N: ";
    cin >> rowsCount;
 
    size_t colsCount = 3;
    int **matrix = new int *[rowsCount];
    for (size_t i = 0; i < rowsCount; i++) {
        *(matrix + i) = new int [colsCount];
        for (size_t j = 0; j < colsCount; j++) {
            size_t currentNumber = 1;
            cout << setw(5) << (*(*(matrix + i) + j) = currentNumber++);
        }
        (colsCount ? (cout << endl, colsCount--) : (colsCount = 3, i--));
    }
    
    for (size_t i = 0; i < rowsCount; i++) {
        delete [] *(matrix + i);
    }
    delete [] matrix;
    matrix = nullptr;
 
    system("pause");
    return 0;
}
Как можно упросить код до самого простого? Чтоб прям вообще все элементарно было, не понимаю )
Допустим вот эти строчки как упросить можно?
C++
1
2
3
   cout << setw(5) << (*(*(matrix + i) + j) = currentNumber++);
        }
        (colsCount ? (cout << endl, colsCount--) : (colsCount = 3, i--));
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2014, 11:15     Упростить код
Посмотрите здесь:

C++ Упростить код
Упростить код C++
упростить код C++
C++ Упростить код
C++ Упростить код
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
28.02.2014, 11:18     Упростить код #2
Можно убрать динамические массивы, заменив их статическими. Можно заменить тернарные операторы на операторы выбора. убрать форматирование вывода. Прямо использовать тип int.
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 233
28.02.2014, 11:39  [ТС]     Упростить код #3
Динамические массивы как раз нужно оставить. Остальное можно поменять. Вот только кто-нибудь помог бы в осуществлении)
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 233
01.03.2014, 20:11  [ТС]     Упростить код #4
Подниму!
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
01.03.2014, 20:52     Упростить код #5
Цитата Сообщение от VitekSR Посмотреть сообщение
Как можно упросить код до самого простого? Чтоб прям вообще все элементарно было, не понимаю )
Допустим вот эти строчки как упросить можно?
C++
1
2
3
    cout << setw(5) << (*(*(matrix + i) + j) = currentNumber++);
}
(colsCount ? (cout << endl, colsCount--) : (colsCount = 3, i--));
Например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
        
    cout << setw(5) << (matrixp[i][j] = currentNumber++);
}
if(colsCount)
{
    cout << endl;
    colsCount--;
}
else
{
    colsCount = 3;
    i--;
}
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 233
02.03.2014, 20:14  [ТС]     Упростить код #6
Теперь программа не выводит числа так, как выводила до этого
Посмотрите еще раз, мб найдете ошибку у себя
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
02.03.2014, 20:34     Упростить код #7
Цитата Сообщение от VitekSR Посмотреть сообщение
Теперь программа не выводит числа так, как выводила до этого
Посмотрите еще раз, мб найдете ошибку у себя
У меня все эквивалентно выводит. Так что мяч на вашей стороне, правильно ли вы все вставили
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
02.03.2014, 21:24     Упростить код #8
А тут какая идея:
Цитата Сообщение от VitekSR Посмотреть сообщение
for (size_t j = 0; j < colsCount; j++) {
* * * * * * size_t currentNumber = 1;
* * * * * * cout << setw(5) << (*(*(matrix + i) + j) = currentNumber++);
* * * * }
это вообще смыла
C++
1
currentNumber++
не имеет, если
C++
1
size_t currentNumber = 1;
внутри for объявлен. либо
C++
1
size_t currentNumber = 1;
за пределы for вынести надо, либо с тем же успехом можно записать
C++
1
2
3
4
        for (size_t j = 0; j < colsCount; j++) {
 
            cout << setw(5) << (*(*(matrix + i) + j) = 1);
        }
Да простят меня эксперты, но мне как то привычнее это
C++
1
*(*(matrix + i) + j)
видеть так
C++
1
matrix[i][j]
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 233
03.03.2014, 05:34  [ТС]     Упростить код #9
C++
1
 (colsCount ? (cout << endl, colsCount--) : (colsCount = 3, i--));
а вот эту строчку как можно проще записать?
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
03.03.2014, 06:08     Упростить код #10
Цитата Сообщение от VitekSR Посмотреть сообщение
а вот эту строчку как можно проще записать?
Я же уже показывал как...
Если у тебя что-то не работает, то давай сюда целиком что исправил. У меня ошибок нет, я проверил.
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
03.03.2014, 09:59     Упростить код #11
Цитата Сообщение от VitekSR Посмотреть сообщение
(*(*(matrix + i) + j)
Я не уверен, но можно попробовать записать так:
C++
1
matrix[i][j]
Добавлено через 1 минуту

Не по теме:

упс... Уже было

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2014, 15:25     Упростить код
Еще ссылки по теме:

C++ Возможно-ли упростить код?
C++ Упростить код
Упростить код C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DrOffset
03.03.2014, 15:25     Упростить код
  #12

Не по теме:

Цитата Сообщение от Рыжий Лис Посмотреть сообщение
упс... Уже было
Аж два раза уже.

Yandex
Объявления
03.03.2014, 15:25     Упростить код
Ответ Создать тему
Опции темы

Текущее время: 16:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru