Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Препод заверяет - код не оптимизирован! 
V
    Опции темы
mrbrooks
Дата 31.1.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Комрады!
У меня вот токаой вопрос. Препод задал создать вложенный цикл. Там скажем 10х10  20х20 и т.д. Я ему нафигачил и нате он мне - типа оптимизируй. Че тут оптимизировать то. Посоветуйте. 
вот код функции 

Код

void array()
{
int k;
cin >> k;
for (int i = 1; i<=k; i++)
         {
                cout << '$';
                for ( int j = 1; j <= (k-1); j++) cout << '$';
                cout << '\n';
         }
}


В принципе есть центр помощи. Да тока мне кажется старый че то мудрит.
PM MAIL   Вверх
MAKCim
Дата 31.1.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Код

void array()
{
int k, i, j, t;
cin >> k;
for (i = 1; i <= k; ++i)
         {
                cout << '$';
                t = k - 1;
                for (j = 1; j <= t; ++j) cout << '$';
                cout << '\n';
         }
}



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Anikmar
Дата 31.1.2007, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



А принципиально цикл начинать с 1? Если с 0, то тогда еще немного уберется.
PM MAIL ICQ   Вверх
mrbrooks
Дата 31.1.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Цитата(Anikmar @ 31.1.2007,  12:46)
А принципиально цикл начинать с 1? Если с 0, то тогда еще немного уберется.

хм да нет не принципиально.

to MAKCim - а вданном случае префикс по сравнению с постфикс на что то влияет?  хотя в принципе да. спасибо попробую таким образом.
PM MAIL   Вверх
MAKCim
Дата 31.1.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

а вданном случае префикс по сравнению с постфикс на что то влияет?

в теории да, на практике обычно нет (в современных компиляторах)

Добавлено @ 13:04 
Код

int k, i, j, t;

void array()
{
cin >> k;
t = k - 1;
for (; i < k; ++i)
         {
                cout << '$';
                for (j = 0; j < t; ++j) cout << '$';
                cout << '\n';
         }
}


Это сообщение отредактировал(а) MAKCim - 31.1.2007, 13:02


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Daevaorn
Дата 31.1.2007, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(mrbrooks @  31.1.2007,  13:35 Найти цитируемый пост)
Я ему нафигачил и нате он мне - типа оптимизируй. Че тут оптимизировать то.

Не очень корректно с его стороны было не уточнить опитизация чего нужна.
Код

void array()
{
    int k;
    cin >> k;
    for( int i = k; i; --i )
    {
        for ( int j = k; j; --j )
            cout << '$';
        cout << '\n';
    }
}

PM MAIL WWW   Вверх
MAKCim
Дата 31.1.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Daevaorn, 
у тебя внутренний цикл повторится на каждй внешней итерации столько же, сколько внешних итераций,
а надо на 1 меньше
+ создание переменной в стеке и ее инициализация (+ 2 инструкции)


Это сообщение отредактировал(а) MAKCim - 31.1.2007, 13:15


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Daevaorn
Дата 31.1.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(MAKCim @  31.1.2007,  14:13 Найти цитируемый пост)
у тебя внутренний цикл повторится на каждй внешней итерации столько же, сколько внешних итераций
надо на 1 меньше 

а не квадратная матрица нужна разве? значит я не понял...
PM MAIL WWW   Вверх
MAKCim
Дата 31.1.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(Daevaorn @  31.1.2007,  13:15 Найти цитируемый пост)
а не квадратная матрица нужна разве? значит я не понял... 

ну исходя из первого поста...


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Sartorius
Дата 31.1.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



Цитата

+ создание переменной в стеке и ее инициализация (+ 2 инструкции)


 ИМХО спорно. Тк зависит он тастроек компилятора. И вообще некоректно ставить задачу оптимизации не уточнив : что это за оптимизация вообще(скорость/размер), что за машина и что за компилятор
PM MAIL ICQ   Вверх
MAKCim
Дата 31.1.2007, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

ИМХО спорно. Тк зависит он тастроек компилятора.

если подходить формально (т. е исходить из языка), то не спорно


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
mrbrooks
Дата 31.1.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Цитата(Daevaorn @ 31.1.2007,  13:09)

Не очень корректно с его стороны было не уточнить опитизация чего нужна.

Да он вообще странный тип препод наш - до этого он преподовал VBA. Даже больше - он его фанат. Задолбал. Но VB у нас замяли (и слава Богу) - вместо него ввели С++. Вот он типа переучился и пытает нас бедненьких своей оптимизацией.

Спасибо за советы. 
PM MAIL   Вверх
maxim1000
Дата 31.1.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



я бы сначала формировал простую строку, а потом за один раз посылал её на cout

Добавлено @ 15:48 
кроме того, можно:
1. посчитать общий размер строки (вместе с переводами строк и последним 0-м)
2. выделить такой массив (впрочем, возможно, и что-то типа vector::reserve подойдёт)
3. заполнить его весь символами $ (подобные вещи компилятор часто заменяет на memset)
4. расставить в нужных местах переносы строк и последний 0
5. послать всё на cout...

Это сообщение отредактировал(а) maxim1000 - 31.1.2007, 15:48


--------------------
qqq
PM WWW   Вверх
mrbrooks
Дата 31.1.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Отлично. Намотал на ус. Всем спасибо.
PM MAIL   Вверх
Vyacheslav
Дата 31.1.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Код

int k = 10;
for (int i = k; i--;)  {
        for (int j = k; j-- ;)  {
             cout << '$';
        }
        cout << '\n';
}



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0649 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.