Recommended Posts

Уважаемые господа...

я тут читаю книжку - пробую и кое-где туплю. Плюс кое-какие задания и пояснения перехватываю от народа. Методом тыка и постепенного осознания. Подскажите элементарные вещи, пожалуйста.

Например, надо вывести

* * * * *

* * * * *

* * * * *

* * * * *

то есть звездочки второго ряда выходят как бы в под пустыми местами первого (шахматная доска)

не понимаю как это нарисовать

у меня пока так только

{

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<B) SWAP (a,b );

 

do {

c=a%b;

a=b;

b=c;

} while (c!=0);

 

return a;

}

 

и я знаю что это не идеальный вариант - просто такой рассматривался на примере

А теперь мне надо посчитать для 12 и 8 наибольший общий делитель, но при этом в программе использовать

d=8

d--; // то есть 7

d--; // тут уже 6.... и так далее

я вроде логику улавливаю. но это "вроде" и как написать ни фига не понимаю.

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky
то есть звездочки второго ряда выходят как бы в под пустыми местами первого (шахматная доска)

не понимаю как это нарисовать

у меня пока так только

{

cout << "*\t*\t*\t*\t*\t*\t*\t*\n";

cout << "\t*\t*\t*\t*\t*\t*\t*\t*\n";

}

но это не правильно....

 

Может их тоже надо циклами выводить, а не прямым текстом? Два вложеных цикла с проверкой на четность.

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky
Может их тоже надо циклами выводить, а не прямым текстом? Два вложеных цикла с проверкой на четность.

 

А разве нельзя в одном? С проверкой на четность? :)

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky
А разве нельзя в одном? С проверкой на четность? :)

Один на строки, другой на звездочки. Циклить, так циклить ;) а вообще хз что там ожидается в качестве правильного ответа. Как показывает практика, составители обучающих книг еще те затейники :)

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Вот если по быстрому и не думая, то как то так.

Ну и шахматы же вроде квадратные? :)

     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;

Результат:

*-*-*-*-*-*-*-*-
-*-*-*-*-*-*-*-*
*-*-*-*-*-*-*-*-
-*-*-*-*-*-*-*-*
*-*-*-*-*-*-*-*-
-*-*-*-*-*-*-*-*
*-*-*-*-*-*-*-*-
-*-*-*-*-*-*-*-*

Правильно?

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Лучше не спасибо говорите, а говорите что все поняли. :)

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky
Лучше не спасибо говорите, а говорите что все поняли. :)

 

jes - что бы все понять я сейчас часок посижу и разберу строчку за строчкой. Потому что сразу так поняла процентов 50%. Сейчас вот с книжкой буду каждую строчку расшифровывать и допонимать. Я пока так и делаю - каждое задание что там описано делаю и перевожу для себя на "русский язык". Вот сейчас ищу значение &&.

У меня много времени уходит на подобный "перевод". А вот когда смогу "нарисовать" круг из звездочек - тогда скажу "спасибо, поняла"-)

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

jes, в простой задаче на циклы ты сделал 192 операции деления и одну умножения. Хотя там можно вообще этого не делать. Теперь ясно, почему современные программы тормозят и на 1GHz процессоре :)

 

Ничего личного, просто я в своё время был вынужден обходится процессором, который умел только складывать и вычитать :) Поэтому мне глаза режет.

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

http://informatics.mccme.ru/moodle/mod/book/view.php?id=547

Логическое И является бинарным оператором (то есть оператором с двумя операндами: левым и правым) и имеет вид && (два знака амперсанда). Оператор && возвращает true тогда и только тогда, когда оба его операнда имеют значение true.

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky
jes, в простой задаче на циклы ты сделал 192 операции деления и одну умножения. Хотя там можно вообще этого не делать. Теперь ясно, почему современные программы тормозят и на 1GHz процессоре :)

 

Ничего личного, просто я в своё время был вынужден обходится процессором, который умел только складывать и вычитать :) Поэтому мне глаза режет.

Вот так и знал, что кто-то подобное напишет. :)

Я и не думал ни об оптимизации, просто написал код, прочитав выше про 1 цикл. Кстати, если об оптимизации, stl тебе глаза не режет? :)

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky
Кстати, если об оптимизации, stl тебе глаза не режет? :)

 

stl? А где это в коде, и что это? ;)

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

:D

Лирика конечно, я в оптимизации не спец, но что-то мне подсказывает, что если делать с вложенным циклом, я сомневаюсь что будет быстрее, N инициализаций вложенного цикла с условием тоже стоит тактов.

 

В общем, ты меня уязвил. :)

С вложенным циклом, на размер 1000x1000:

real    0m0.249s
user    0m0.043s
sys     0m0.020s

С множественным делением, на размер 1000x1000:

real    0m0.227s
user    0m0.047s
sys     0m0.020s

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

С вложенным циклом как чётность определял? Кстати, попробуй посчитать без операция вывода, мне кажется основные потери там.

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

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

То есть разница несущественна... вообще.

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Odpovědět na toto téma...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Kdo si právě prohlíží tuto stránku

    Žádný registrovaný uživatel si neprohlíží tuto stránku