agata Odesláno February 6, 2011 Autor Nahlásit Odesláno February 6, 2011 Уважаемые господа... я тут читаю книжку - пробую и кое-где туплю. Плюс кое-какие задания и пояснения перехватываю от народа. Методом тыка и постепенного осознания. Подскажите элементарные вещи, пожалуйста. Например, надо вывести * * * * * * * * * * * * * * * * * * * * то есть звездочки второго ряда выходят как бы в под пустыми местами первого (шахматная доска) не понимаю как это нарисовать у меня пока так только { cout << "*\t*\t*\t*\t*\t*\t*\t*\n"; cout << "\t*\t*\t*\t*\t*\t*\t*\t*\n"; } но это не правильно.... и еще я тут считаю НОД одним вариантом int SWAP (int a, int b ){ int c; c=a; a=b; b=c; return 0; } int NSD (int a, int b ) { int c; if (a< SWAP (a,b ); do { c=a%b; a=b; b=c; } while (c!=0); return a; } и я знаю что это не идеальный вариант - просто такой рассматривался на примере А теперь мне надо посчитать для 12 и 8 наибольший общий делитель, но при этом в программе использовать d=8 d--; // то есть 7 d--; // тут уже 6.... и так далее я вроде логику улавливаю. но это "вроде" и как написать ни фига не понимаю.
Archer Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 то есть звездочки второго ряда выходят как бы в под пустыми местами первого (шахматная доска) не понимаю как это нарисовать у меня пока так только { cout << "*\t*\t*\t*\t*\t*\t*\t*\n"; cout << "\t*\t*\t*\t*\t*\t*\t*\t*\n"; } но это не правильно.... Может их тоже надо циклами выводить, а не прямым текстом? Два вложеных цикла с проверкой на четность.
buster Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 Может их тоже надо циклами выводить, а не прямым текстом? Два вложеных цикла с проверкой на четность. А разве нельзя в одном? С проверкой на четность?
Archer Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 А разве нельзя в одном? С проверкой на четность? Один на строки, другой на звездочки. Циклить, так циклить а вообще хз что там ожидается в качестве правильного ответа. Как показывает практика, составители обучающих книг еще те затейники
jes Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 Вот если по быстрому и не думая, то как то так. Ну и шахматы же вроде квадратные? int size = 8; for(int i = 0; i < size*size; ++i){ if (i % size == 0 && i > 0) std::cout << std::endl; std::cout << (i / size % 2 ? "-*" : "*-"); } std::cout << std::endl; Результат: *-*-*-*-*-*-*-*- -*-*-*-*-*-*-*-* *-*-*-*-*-*-*-*- -*-*-*-*-*-*-*-* *-*-*-*-*-*-*-*- -*-*-*-*-*-*-*-* *-*-*-*-*-*-*-*- -*-*-*-*-*-*-*-* Правильно?
jes Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 Лучше не спасибо говорите, а говорите что все поняли.
agata Odesláno February 6, 2011 Autor Nahlásit Odesláno February 6, 2011 Лучше не спасибо говорите, а говорите что все поняли. jes - что бы все понять я сейчас часок посижу и разберу строчку за строчкой. Потому что сразу так поняла процентов 50%. Сейчас вот с книжкой буду каждую строчку расшифровывать и допонимать. Я пока так и делаю - каждое задание что там описано делаю и перевожу для себя на "русский язык". Вот сейчас ищу значение &&. У меня много времени уходит на подобный "перевод". А вот когда смогу "нарисовать" круг из звездочек - тогда скажу "спасибо, поняла"-)
Archer Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 jes, в простой задаче на циклы ты сделал 192 операции деления и одну умножения. Хотя там можно вообще этого не делать. Теперь ясно, почему современные программы тормозят и на 1GHz процессоре Ничего личного, просто я в своё время был вынужден обходится процессором, который умел только складывать и вычитать Поэтому мне глаза режет.
sashka304 Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 http://informatics.mccme.ru/moodle/mod/book/view.php?id=547 Логическое И является бинарным оператором (то есть оператором с двумя операндами: левым и правым) и имеет вид && (два знака амперсанда). Оператор && возвращает true тогда и только тогда, когда оба его операнда имеют значение true.
jes Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 jes, в простой задаче на циклы ты сделал 192 операции деления и одну умножения. Хотя там можно вообще этого не делать. Теперь ясно, почему современные программы тормозят и на 1GHz процессоре Ничего личного, просто я в своё время был вынужден обходится процессором, который умел только складывать и вычитать Поэтому мне глаза режет. Вот так и знал, что кто-то подобное напишет. Я и не думал ни об оптимизации, просто написал код, прочитав выше про 1 цикл. Кстати, если об оптимизации, stl тебе глаза не режет?
Archer Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 Кстати, если об оптимизации, stl тебе глаза не режет? stl? А где это в коде, и что это?
jes Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 Лирика конечно, я в оптимизации не спец, но что-то мне подсказывает, что если делать с вложенным циклом, я сомневаюсь что будет быстрее, N инициализаций вложенного цикла с условием тоже стоит тактов. В общем, ты меня уязвил. С вложенным циклом, на размер 1000x1000: real 0m0.249s user 0m0.043s sys 0m0.020s С множественным делением, на размер 1000x1000: real 0m0.227s user 0m0.047s sys 0m0.020s
Archer Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 С вложенным циклом как чётность определял? Кстати, попробуй посчитать без операция вывода, мне кажется основные потери там.
jes Odesláno February 6, 2011 Nahlásit Odesláno February 6, 2011 i & 1 и i % 2 И в том и том варианте. Ок, без вывода, Циклы и использование i & 1: real 0m0.031s user 0m0.030s sys 0m0.000s Деления и использование i % 2 real 0m0.032s user 0m0.027s sys 0m0.003s То есть разница несущественна... вообще.
Recommended Posts
Pokud chcete odpovídat, musíte se přihlásit nebo si vytvořit účet.
Pouze registrovaní uživatelé mohou odpovídat
Vytvořit účet
Vytvořte si nový účet. Je to snadné!
Vytvořit nový účetPřihlásit se
Máte již účet? Zde se přihlašte.
Přihlásit se