Вейв форум!

Объявление

Fantasy Wave: The Beginning

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Вейв форум! » IT » Нью гэйм - трай ту гуесс, вот дас дыс коуд ду


Нью гэйм - трай ту гуесс, вот дас дыс коуд ду

Сообщений 1 страница 20 из 62

1

значит так, я придумал новую игру на ЛОГИКУ (это намёк на то, что мила может даже не пытаться))).
Короче, хз, сложная или нет эта игра, но короче, я выкладываю сюда свой код С++, а вы отгадываете, что делает программа) по ходу я ещё буду пробовать подсказывать)) Игра находится в экспериментальном состоянии, потому что я уверен, что играть в неё никто не будет))
так вот, первый код) написал я его только что за 15 минут специально для этой игры)
для начала я сотру всё, что намекает (очень сильно) на то, что эта программа делает....оставлю только одну подсказку, помимо самого кода... надеюсь, догадаетесь, в чём она заключается...:

Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{long int num, ed, des, sot, tqs, dest, sott, sum;
	cout<<"Enter number"<<endl;
	cin>>num;
	ed = num%10;
	des = (num%100-ed)/10;
	sot = (num%1000 -(ed+(des*10)))/100;
	tqs = (num%10000 - (ed+(des*10)+(sot*100)))/1000;
	dest = (num%100000 - (ed+(des*10)+(sot*100)+(tqs*1000)))/10000;
	sott = (num%1000000 - (ed+(des*10)+(sot*100)+(tqs*1000)+(dest*10000)));
	sum=ed+des+sot+tqs+dest+sott;
	if (sott!=0)
    cout<<"************************: "<<sott<<" "<<dest<<" "<<tqs<<" "<<sot<<" "<<des<<" "<<ed<<endl; 
	else {
    if (dest!=0) 
    cout<<"T************************: "<<dest<<" "<<tqs<<" "<<sot<<" "<<des<<" "<<ed<<endl;
    else {
    	if (tqs!=0) 
    	cout<<"************************: "<<tqs<<" "<<sot<<" "<<des<<" "<<ed<<endl;
    	else {
        if (sot!=0) 
        cout<<"T************************: "<<sot<<" "<<des<<" "<<ed<<endl;
        else {
        	if (des!=0)
        	cout<<"************************:"<<des<<" "<<ed<<endl;
        	else {
            if (ed!=0)
            cout<<"************************: "<<ed<<endl;
        	else cout<<"There is only 0"<<endl;
            }
        	}
        }
    	}
    }
	cout<<"************************: "<<sum;
	getch();
	return 0;
}

Программа потребует положительное целое число для ввода. А вот насчёт вывода должны догадаться вы.
Щитож, попробуем...)

0

2

Писец......я Мила! 0_0

0

3

блин, это же просто... ладно, подсказка - знак "%" означает остаток от деления на число.

0

4

Игра называется:
"Почувствуй себя Милой"
Как-то даже неприятно стало, обидно.

0

5

ясно))) хехехее)))
ладно, что именно вам не понятно тут?) начинайте с самого начала)

0

6

Муть какую-то прога творит. Мозг щас не варит..но прога проводит какие-то буйные математические действия с введенным пользователем числом..цель которых мне не ясна..
высчитывает количество знаков в числе? (хотя..вроде нет 0о) просто надругается над ними заставляя отнимать от ещё более поделенного числа результаты сложений прошлых мучений числа в прошлых действиях? стремится дойти до нуля или ниже и поделить на ноль для призыва сатаны? короч моя мозх сейчас не варит xD пойду спать

0

7

ого, хоть какой-то более или менее вразумительный ответ)) программа настолько проста, что не требует даже мозг, чтобы решить ладно, это уже шутка)))) самое смешное, что я нашёл один просчёт... причём, очень действенный во всей игре))) но я вам его не скажу=РР
на самом деле ксай прав, программа делает некие вычислительные действия с данным числом, но есть ещё подсказка, которая может крыться в названиях переменных вот в этой строчке:

Код:
long int num, ed, des, sot, tqs, dest, sott, sum;

кто знает, что они означают? Но подсказка на их назначение лежит в формулах на следующих строках...:

Код:
ed = num%10;
	des = (num%100-ed)/10;
	sot = (num%1000 -(ed+(des*10)))/100;
	tqs = (num%10000 - (ed+(des*10)+(sot*100)))/1000;
	dest = (num%100000 - (ed+(des*10)+(sot*100)+(tqs*1000)))/10000;
	sott = (num%1000000 - (ed+(des*10)+(sot*100)+(tqs*1000)+(dest*10000)));
	sum=ed+des+sot+tqs+dest+sott;

что даёт % я уже говорил... ну очень же просто догадаться уже... такая подсказка серьёзная=( я мог эту программу написать уже на самом первом занятии по программированию, хотя раньше я вообще в этом абсолютно ничего не понимал... точнее, не знал... ну же, тут же требуются только  очень простые математические вычисления...

0

8

кстати, команда cout просто выводит на экран то, что написано в кавычках, или, если нет кавычек, значение переменной, которая там написана... о есть, команда

Код:
cout<<"Enter number"<<endl;

выведет на экран сначала надпись "Enter number", а потом перейдёт на следующую строку (это команда  endl).
а вот строчка

Код:
cout<<"************************: "<<sott<<" "<<dest<<" "<<tqs<<" "<<sot<<" "<<des<<" "<<ed<<endl;

Выведет сначала "************************: ", потом значение переменной sott, потом пробел (" "), потом значение переменной dest, пробел, потом значение переменной tqs и так дажее...
Команда If переводится прямо дословно, "Если". то есть это условие. Условие дано в скобках сразу после команды if. если условие в скобках верно, то выполняется действие, идущее после скобок. Если же условие в скобках не верно, о идёт выполнение того, что написано посли else ("иначе")... условия можно использовать разные знаки.
Примеры всего вышесказанного:

Код:
if (c==0) cout<<c+1;
               else cout<<"black cockoo is always watching you"<<endl;

данная часть кода (неполноценная, правда, но ради примера сойдёт) означает следующее.
если переменная с равна нулю, то на экран выводится с+1, то есть "1" ( 0+1 = 1). в противном случае (если с не равно нулю) выводится надпись "black cockoo is always watching you". Смысл этой фразы вам должен быть понятен.
следующий пример:

Код:
if (c>0) cout<<"С больше нуля";
           else {
                   if (c<0) cout<<"С меньше нуля";
                     else cout<<"С равен нулю";
                   }

данный код даёт следующее...
Если переменная С больше нуля, то выведется соответствующая надпись. в противном случае (если С меньше или равна нулю) идёт следующая проверка. И если С меньше нуля, то выводится надпись "С меньше нуля". В противном же случае (а именно, с не больше и не меньше нуля), выводится надпись "С равен нулю", потому что в данном случае с действительно будет равен нулю...
и последний пример, который должен напрочь разрушить ваш мозг:

Код:
if (c<0) cout<<"Дробь отрицательна, поэтому я просто как-то не хочу её считать"<<endl;
            else if (c!=0) cout<<1/c;
                      else cout<<"А на ноль делить нельзя"<<endl;

данная часть кода даст вам следующее
Если с меньше нуля, то оно прямо так и скажет, что дробь (1/c) будет отрицательной и считать оно её не хочет (только потому, что я так сказал ей говорить, на самом деле она всё может и хочет, но не будет).
Если с не равно нулю ("!=" означает именно "не равно"), то оно выведет значение выражения 1/с. В противном случае (а именно, если с равно нулю), оно скажет, что на ноль делить нельзя. Вот такие пироги, хоть учебник сиди и пиши))

0

9

Серый, ты делаешь бетономешалку онлайн?

0

10

самое забавное - я понимаю буквально каждое действие, но не понимаю НАХУЯ

{long int num, ed, des, sot, tqs, dest, sott, sum;

прога определяет переменные
число (которое введет пользователь), единицы, десятки, сотни, тысячи, десятки тысяч, сотни тысяч..или скорее по контексту "детсятые части", "сотые части", "тысячные части" и.т.д...

cout<<"Enter number"<<endl;
cin>>num;

выводит строчку и требует ввести в неё число

ed = num%10;
des = (num%100-ed)/10;
sot = (num%1000 -(ed+(des*10)))/100;
tqs = (num%10000 - (ed+(des*10)+(sot*100)))/1000;
dest = (num%100000 - (ed+(des*10)+(sot*100)+(tqs*1000)))/10000;
sott = (num%1000000 - (ed+(des*10)+(sot*100)+(tqs*1000)+(dest*10000)));
sum=ed+des+sot+tqs+dest+sott;

эта часть у меня вызывает наибольший АХУЙ...ибо я не понимаю всё равно НАХУЯ
ибо..

"ed" это число деленное на 10. хорошо. допустим я ввел 5...делим на 10 получаем 0.5.
дальше интереснее
"des" это (число деленное на 100 - ed)и всё получившееся делим ещё и на 100. Считаем на примере числа 5... 5/100 -ed (а ed у нас равно 0.5)...выходит уже -0.45...делим на 10...и выходит уже -0.045...однако дальнейшие действия, как я понял, только если число больше нуля....выходит мы делим на ноль уже во втором действии xDD фигурально говоря. причем даже пох что мы вводим..мы кажись гарантированно идем в минус ВСЕГДА
дальше идут паодобные действия...типа (начальное число деленное на 1000 - (дес умножить на 10 +ед)) / 100...но это уже не важно ибо я хз каким чудом мы получим положительное число во втором действии..так что хз как вообще третье действие и его результат выведутся на экран...
по идее вроде скрипт должен быв выдавать что-то вроде 0.5, 0.55, 0.555 если выставить ему число 5...как-то так...или я изначально не прав...
короч обесни, Серый! хочу знать истину!!!

0

11

ксай, ты очень правильно рассуждаешь)но истина в том, что знак % - это НЕ деление) это остаток от деления) то есть  если введём 5, и будет действие 5%10, то остаток от деления на 10 будет 5. если введёшь 25, то остаток от деления на 10 тоже будет 5) читайте внимательнее))

0

12

тогда просто каждое действие к начальному числу прибавляется ноль и от него отнимается сумма прошлых вычислений, причем не просто так а ed всегда не умножается, des умножается на 10 и.т.д....и потом делится всё это на число с определенным количеством нулей...а именно числом с количеством нулей на 1 меньше чем при умножении заанного числа в начале действия. так продолжается пока число не опускается до нула, а если не опускается то результаты выдаются нам на экран...все не приведшие к нулю или минусу...если таких результатов было 3 нам покажут 3 числа, если все 6 то нам все 6 и покажут...
такая своеобразная прогрессия с зависимостью от числа a, вводимого пользователем 0о как-то так..могу даже примерно формулу прогрессии записать

лан..пойду лучше к экзамену готовиццо)))

0

13

Ясно)) короче, ближе к ответу я так понял мы уже не подберёмся) так что я всё разъясню) программа разкладывает введённое число на составляющие его цифры.
то есть если введённое число - 54739, то программа выведет цифры
5 4 7 3 9
и позже выведет сумму этих чисел. Сейчас расскажу поподробнее:

Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;

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

Код:
{long int num, ed, des, sot, tqs, dest, sott, sum;
	cout<<"Enter number"<<endl;
	cin>>num;

Об этой части кода Ксай сказал верно) Сначала идёт декларирование переменных, потом выводится надпись "Enter umber" и требуется ввести ваше число, и переменной num присваивается значение этого числа, а далее начинается основная часть программы. допустим введённое число - 54739.

Код:
ed = num%10;

ed (единицы) равны остатку от деления этого числа на 10. то есть если мы разделим 54739 на 10, получится 5473, и 9 будет в остатке. Переменной ed присваивается как раз значение эого остатка - 9.

Код:
des = (num%100-ed)/10;

далее, des (десятки). Собственно то же самое, что и предыдущая строчка, но остаток уже вычисляется от деления на 100. то есь если разделить 54739 на сто, то получится 547 и 39 в остатке. отнимаем от этого числа ed (которое равно 9), и получаем 30. И потом делим его на 10, чтобы получить однозначное число, а именно 3. И переменной des присваивается значение 3.

Код:
sot = (num%1000 -(ed+(des*10)))/100;
	tqs = (num%10000 - (ed+(des*10)+(sot*100)))/1000;
	dest = (num%100000 - (ed+(des*10)+(sot*100)+(tqs*1000)))/10000;
	sott = (num%1000000 - (ed+(des*10)+(sot*100)+(tqs*1000)+(dest*10000)));

тут всё аналогично. От деления на 1000 получаем число 54, и остаток 739, отнимаем от него единицы и десятки. переменную des умножаем на 10, чобы получить число 30 (если не умножать, то отнимется только 9 и 3, то есть 12, а нам надо, чтобы отнялось именно 39), и полученное число (700) делим на 100, чтобы получить 7, и так далее. теперь перейдём к if`ам.

Код:
if (sott!=0)
    cout<<"************************: "<<sott<<" "<<dest<<" "<<tqs<<" "<<sot<<" "<<des<<" "<<ed<<endl; 
	else {
    if (dest!=0) 
    cout<<"T************************: "<<dest<<" "<<tqs<<" "<<sot<<" "<<des<<" "<<ed<<endl;
    else {
    	if (tqs!=0) 
    	cout<<"************************: "<<tqs<<" "<<sot<<" "<<des<<" "<<ed<<endl;
    	else {
        if (sot!=0) 
        cout<<"T************************: "<<sot<<" "<<des<<" "<<ed<<endl;
        else {
        	if (des!=0)
        	cout<<"************************:"<<des<<" "<<ed<<endl;
        	else {
            if (ed!=0)
            cout<<"************************: "<<ed<<endl;
        	else cout<<"There is only 0"<<endl;
            }
        	}
        }
    	}
    }

данная часть кода аписана вот для чего.
Если в числе у нас не 6 знаков, а меньше, то будет получаться, что программа будет выводить ещё и нули. то есть, если введём  54, и получится, чо там 4 единицы, 5 десятков, 0 сотен, 0 тысяч и т.д.. от этого она выдавала бы такие числа:
0 0 0 0 5 4.
нам же эти нули не нужны. ну, они как бы ни на что не влияют, но всё равно не красиво. для того, чобы их опустить я применяю все эти ифы.

Код:
if (sott!=0)
    cout<<"************************: "<<sott<<" "<<dest<<" "<<tqs<<" "<<sot<<" "<<des<<" "<<ed<<endl;

Данная строка означает, что есть sott (сотни тысяч) не равно нулю (то есть любое другое число), то выводятся все цифры начиная с сотен тысяч и до единиц.

Код:
else {
    if (dest!=0) 
    cout<<"T************************: "<<dest<<" "<<tqs<<" "<<sot<<" "<<des<<" "<<ed<<endl;

в противном случае (если sott равно нулю), идёт проверка, а не равно ли dest нулю, и если не равно, то выводятся все цифры от десятков тысяч до единиц. а если равно, то идёт следующая поверка, не равно ли tqs (тысячи) нулю, и так далее. Если все цифры равны нулю, то программа выводит на экран "There is only 0".

Код:
cout<<"************************: "<<sum;
	getch();
	return 0;

Первая строчка выводит на экран какую-то надпись и значение переменной sum, которую мы считали ранее. То есть сумма всех этих цифр.
getch () задерживает на экране всё, что там выведено и введено до тех пор, пока не будет нажата любая клавиша. то есь если не написать эту команду, то программа всё решит, выведет и сразу закроется. и произойдёт это быстро. Вы даже прочесть не успеете. А благодаря этой команде, всё будет держаться на экране.
return 0 возвращает ноль. друими словами, завершает программу.
всё просто, господа, у кого ещё есть вопросы?)

Отредактировано Seryi (2010-01-27 11:06:55)

0

14

кстати, если вы хотите проверить, работает ли это, и как это работает, то эо можно проверить очень легко (в чём, собственно говоря, и заключается мой прокол).
С сайта майкрософт.ком можно бесплатно скачать Visual C++ Express edition, установить его себе на комп, создать проект (приложение win32), ввести туда весь мой код, и нажать на F7, чтобы он скомпилировался (секунд 5). и потом нажаь на F5, чтобы запустить программу) вводите любое число до шести знаков, и смотрите)

0

15

а вот такую слабо разгадать?=РРР

Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <math.h>
#include <time.h>
using namespace std;
double up (double x, double start, double end);
double down (double x, double start, double end);
double quot (double up, double down);
double up (double x, double start, double end)
{double p=1;
	for (double i=start; i<end; i++)
	{if (i!=x) 
    p=p*(x-i);
	}
return p;
}
double down (double x, double start, double end)
{double g=1;
	for (double i=4; i<64; i++)
    {if (i!=x) 
    	g=g*(x-i);
	}
return g;
}
double quot (double up, double down)
{double q;
q=up/down;
return q;
}
int _tmain(int argc, _TCHAR* argv[])
{int x, y, z;
double u, d, a;
	cout<<"Enter x"<<endl;
    cin>>x;
	cout<<"Enter y"<<endl;
    cin>>y;
	cout<<"Enter z"<<endl;
    cin>>z;
	u=up(x, y, z);
	d=down(x, y, z);
    a=quot (u, d);
    cout<<a;
	getch();
	return 0;
}

ну это я правда уже не совсем серьёзно, потому что вижу, что из затеи совсеем ничего не выходит)))

0

16

Seryi
Почему-то у меня второй код складывается в какое-то подобие дискриминанта.
Хотя еще подумаю.

0

17

ммм, скажи пожалуйста, какая именно часть этого кода похожа на b^2 - 4ac?))))
Дискриминант считать вообще просто, там пара строчек)

0

18

Seryi
ну не знаю, не знаю.
Местами напоминает дробь. Но и не дробь, в то же время.
Опять очередная вычислялка, в которой надо ввести переменные x y z

0

19

дробь здесь только в данной части кода:

Код:
double quot (double up, double down)
{double q;
q=up/down;
return q;
}

и это самое простое деление) Если хочешь, могу написать программу, которая будет дискриминант высчитываь)

0

20

Seryi
Да я на паскале такую напишу. Не очень тяжело, в принципе.
На С++ я еще не шарю почти ничего, но пытаюсь понять)

0


Вы здесь » Вейв форум! » IT » Нью гэйм - трай ту гуесс, вот дас дыс коуд ду