Re: ищу GOSUB
От: Ranger_XL  
Дата: 01.07.05 11:13
Оценка:
Думаю, что хорошим в данном случае будет вариант замены goto на switch. Как в С# это будет, на 100% утверждать не буду, но в С++ примерно так:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s0;
    enum _states {S1, S2, S3, S4, SEND};
    _states state = S1;

    while (state != SEND) {
        switch (state) {
        case S1:
            s0 = "Hellow, dummy user!\n";
            state = S2;
            break;
        case S2:
            s0 = "I'm a mighty oracul!\n";
            state = S3;
            break;
        case S3:
            s0 = "Do you want to know your future?\n";
            state = S4;
            break;
        case S4:
            s0 = "Whatever you want your fate is DEATH :)\n";
            state = SEND;
            break;
        }
        cout << s0;
    }
    return 0;
}
Re[2]: ищу GOSUB
От: BCoder Россия http://bcoder.narod.ru
Дата: 01.07.05 11:25
Оценка: :)
Здравствуйте, Ranger_XL, Вы писали:

R_X>Думаю, что хорошим в данном случае будет вариант замены goto на switch. Как в С# это будет, на 100% утверждать не буду, но в С++ примерно так:

R_X>
R_X>#include <iostream>
R_X>#include <string>
R_X>using namespace std;
R_X>int main()
R_X>{
R_X>    string s0;
R_X>    enum _states {S1, S2, S3, S4, SEND};
R_X>    _states state = S1;
R_X>    while (state != SEND) {
R_X>        switch (state) {
R_X>        case S1:
R_X>            s0 = "Hellow, dummy user!\n";
R_X>            state = S2;
R_X>            break;
R_X>        case S2:
R_X>            s0 = "I'm a mighty oracul!\n";
R_X>            state = S3;
R_X>            break;
R_X>        case S3:
R_X>            s0 = "Do you want to know your future?\n";
R_X>            state = S4;
R_X>            break;
R_X>        case S4:
R_X>            s0 = "Whatever you want your fate is DEATH :)\n";
R_X>            state = SEND;
R_X>            break;
R_X>        }
R_X>        cout << s0;
R_X>    }
R_X>    return 0;
R_X>}
R_X>



Спасибо за помощь, но я так и не понял как этот код решает уравнение, или для этого в С++ есть специальная комманда ? Если с++ так хорош, то может использовать его вместо с# ?

Иван
Re[4]: ищу GOSUB
От: AlexGK Россия  
Дата: 01.07.05 17:48
Оценка:
Здравствуйте, AlexGK, Вы писали:

AGK>Здравствуйте, adontz, Вы писали:


Угу, надо исправить:
if((desc<0)||(a==0)
return false
x1=(-b+Math.Sqrt(desc)/(2*a)
x1=(-b+Math.Sqrt(desc)/(2*a)
Re: ищу GOSUB
От: AlexGK Россия  
Дата: 01.07.05 19:56
Оценка:
Здравствуйте, BCoder, Вы писали:

BC>Привет, программисты !


BC>Я вот написал программу для расчёта квадратного уравнения. Задумал её улучшить и сделал медленный вывод строки (как печатают на машинке). Когда я её писал на qbasic'е там была удобная комманда gosub, которая работала как goto, только позволяла вурнуться.

BC>Подскажите, а как это можно сделать на с#.
BC>Вот текст программы:

Окончательный вариант:

using System;
using System.IO;
using System.Threading;
namespace MegaRulezzz {
    class Class1 {
        private const int _timeOut = 50;
        private static void Write(string msg) {
            foreach (char item in msg) {
                Console.Write(item);
                Thread.Sleep(_timeOut);
            }
        }
        private static bool _solve(double a, double b, double c, out double x1, out double x2) {
            x1 = x2 = 0;
            double desc = b * b - 4 * a * c;
            if ((desc < 0) || (a == 0))
                return false;
            x1 = (-b + Math.Sqrt(desc)) / (2 * a);
            x2 = (-b - Math.Sqrt(desc)) / (2 * a);
            return true;
        }
        static double _readdouble(ref bool ex) {
            try {
                return double.Parse(Console.ReadLine());
            }
            catch (FormatException) {
                ex = true;
                return 0.0;
            }
        }
        static char _readChar() {
            try {
                return char.Parse(Console.ReadLine());
            }
            catch (FormatException) {
                return ' ';
            }
        }
        private static bool _readVals(out Double a, out Double b, out Double c) {
            bool pr = false;
            a = _readdouble(ref pr);
            b = _readdouble(ref pr);
            c = _readdouble(ref pr);
            return pr;
        }
        private static bool _isDstChar(char src, char dst) {
            return (src == Char.ToUpper(dst)) || (src == Char.ToLower(dst));
        }
        static void Main(string[] args) {
            double x1, x2, a, b, c;
            char chr;
            do {
                Write("Введите коэффициенты квадратного уравнения:\n");
                if (_readVals(out a, out b, out c))
                    Write("Введенные значения числами не являются!\n");
                else
                    if (_solve(a, b, c, out x1, out x2))
                        if (x1 == x2)
                            Write(string.Format("Решение уравнения: x={0}\n", x1));
                        else
                            Write(string.Format("Решения уравнения: x1={0}, x2={1}\n", x1, x2));
                    else
                        Write("Уравнение решения не имеет.\n");
                do Write("Попробуете еще раз, (Y/N) ?\n"); 
                while (((chr = _readChar()) == ' ') || (!_isDstChar(chr, 'y') && !_isDstChar(chr, 'n')));
            } while (!_isDstChar(chr, 'n'));
        }
    }
}
Re[5]: ищу GOSUB
От: adontz Грузия http://adontz.wordpress.com/
Дата: 01.07.05 20:25
Оценка:
Здравствуйте, AlexGK, Вы писали:

Угу, надо исправить:
if((desc<0)||(a==0))
return false
x1=(-b+Math.Sqrt(desc))/(2*a)
x1=(-b+Math.Sqrt(desc))/(2*a)

Если раньше неправильно считало, то теперь вооще не компилируется
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: ищу GOSUB
От: mr_ST  
Дата: 02.07.05 19:17
Оценка:
Здравствуйте, DEMON HOOD, Вы писали:

DH>На самом деле, существует много разных языков и разных компьютеров... Я например, школьником, решал квадратные уравнения при помощи девайса — калькулятор МК-?? Там был goto... и был особый стиль программирования — ищу GOSUB
Автор: BCoder
Дата: 30.06.05
вот он продемонстрован. На моём оборудовании, по другому (без goto) программировать было нельзя, подозреваю что и сейчас существует техника на которой без goto не обойтись, какие нибудь станки с ЧПУ....


На уровне маш.кодов без goto не обойдешься, но не на уровне языка. Firmware для контроллеров давно уже пишут на С и даже на C++, в некоторых случаях на ассемблере.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[6]: ищу GOSUB
От: Аноним  
Дата: 03.07.05 15:02
Оценка: -2
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, AlexGK, Вы писали:


A>Угу, надо исправить:

A>if((desc<0)||(a==0))
A>return false
A>x1=(-b+Math.Sqrt(desc))/(2*a)
A>x1=(-b+Math.Sqrt(desc))/(2*a)

A>Если раньше неправильно считало, то теперь вооще не компилируется


Ты тупой? Наверное не компилируется потому что ";" надо ставить.
Re[6]: ищу GOSUB
От: AlexGK Россия  
Дата: 03.07.05 15:38
Оценка: -1 :)))
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, AlexGK, Вы писали:


A>Угу, надо исправить:

A>if((desc<0)||(a==0))
A>return false
A>x1=(-b+Math.Sqrt(desc))/(2*a)
A>x1=(-b+Math.Sqrt(desc))/(2*a)

A>Если раньше неправильно считало, то теперь вооще не компилируется


М-да..... в России две беды: доороги и люди, у которых не компилируются программы....
Re[3]: ищу GOSUB
От: Ranger_XL  
Дата: 04.07.05 05:28
Оценка:
BC>Спасибо за помощь, но я так и не понял как этот код решает уравнение, или для этого в С++ есть специальная комманда ? Если с++ так хорош, то может использовать его вместо с# ?

Этот код не решает уравнение, он демонстрирует, как заменить goto/gosub
Re[3]: ищу GOSUB
От: Аноним  
Дата: 04.07.05 06:01
Оценка:
Лежу на полу, и бьюсь в истерике...

jmz, однозначно, Иван, тебе нужен jmz...

А губит людей даже не goto, губит многих людей их собственный мозг, честное слово.
Found By Iteration — XML Powered — .NET Built
Блог [[url=http://blogs.gotdotnet.ru/personal/Maniaque]http://blogs.gotdotnet.ru/personal/Maniaque[/url]]


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: ищу GOSUB
От: BCoder Россия http://bcoder.narod.ru
Дата: 04.07.05 09:40
Оценка: 3 (1) :)))
Снова привет, программисты.

Я тут посмотрел предложенные программы, но в них ещё не разобрался.
Зато я полазил по сайту и почитал про объектно ориентированное программирование, и мы на выходных с другом программистом на турбо паскале переписали программу без комманды goto с помощью процедур.



Вот что получилось:

using System;

namespace MegaRulezzz
{
    using System;

    class Class1
    {
        static float v1, v2, v3;
        static string s0;
        static char i;
        static int j;
        static void Main(string[] args)
        {
            lminus5();
        }
        static void lminus5()
        {
            s0 = "Hellow, dummy user !\n";
            i=(char)0;
            l100();
        }
        static void    lminus4()
        {
            s0= "I am a Great Programm !\n";
            i=(char)1;
            l100();
        }
        static void    lminus3()
        {
            s0= "My Great Mission is to solve quadratic equation !\n";
            i=(char)2;
            l100();
        }
        static void    lminus2()
        {
            s0= "New economy algorithm for memory using !!!\n";
            i=(char)3;
            l100();
        }
        static void    lminus1()
        {
            l0();
        }
        static void    l0()
        {
            s0= "Please, dummy user, insert a,b,c koefficients :\n";
            i=(char)4;
            l100();
        }
        static void    l1()
        {
            v1 = (float)Convert.ToDouble(Console.ReadLine());
            v2= (float)Convert.ToDouble(Console.ReadLine());
            v3= (float)Convert.ToDouble(Console.ReadLine());
            l3();
        }
        static void    l3()
        {
            if (v2*v2 <4*v1*v3) l4();
            if (i==4) l5();
        }
        static void    l4()
        {
            s0= "You are realy dummy user, your equation havn't solve.\n";
            i=( char)6;
            l100();
        }
        static void    l4a()
        {
            s0="Try again, (Y/N) ?\n";
            i=(char)7;
            l100();
        }
        static void    l4b()
        {
            v1 = (float)Console.Read();
            Console.ReadLine();
            if(v1 == 121) l0();
            if(v1 == 110) l9();
            if(i<12) l4a();
        }
        static void    l5()
        {
            v3 = v2*v2 -4*v1*v3;
            v3 = (float)Math.Sqrt(v3)/ v1/2;
            v2 /= -2*v1;
            v1 = v2 + v3;
            v2 = v1 - 2*v3;
            l7();
        }
        static void    l7()
        {
            s0= "x1 =" + v1.ToString()+ "\n";
            i=(char)11;
            l100();
        }
        static void    l7a()
        {
            s0="x2 = " +v2.ToString() +"\n";
            i=(char)10;
            l100();
        }
        static void    l8()
        {
            s0="Once again, (Y/N) ?\n";
            i=(char)9;
            l100();
        }
        static void    l8a()
        {
            v1 = (float)Console.Read();
            Console.ReadLine();
            if(v1 == 121) l0();
            if(v1 == 110) l9();
            if(i<12) l8();
        }
        static void    l9()
        {
            l1000();
        }
        static void    l100()
        {
            j=-1;
            l101();
        }
        static void    l101()
        {
            if(j<s0.Length-1) l101a();
            else l110();
        }
        static void l101a()
        {
            Console.Write(s0[j=j+1].ToString());
            System.Threading.Thread.Sleep(50);
            l101();
        }
        static void    l110()
        {
            if(i==0 ) lminus4();
            if(i==1) lminus3();
            if(i==2) lminus2();
            if(i==3) lminus1();
            if(i==4 ) l1();
            if(i==6 ) l4a();
            if(i==7) l4b();
            if(i==11 ) l7a();
            if(i==10) l8();
            if(i==9) l8a();
            if(i==12) l1001();
        }
        static void    l1000()
        {
            if(i<12) l1000a();
        }
        static void l1000a()
        {
            s0 ="Goodbye, user.\n";
            i=(char)12;
            l100();
        }
        static void    l1001()
        {
            ;
        }
    }
}



Иван
Re[2]: ищу GOSUB
От: faulx  
Дата: 04.07.05 10:07
Оценка: 2 (1)
По-моему, человек явно прикалывается и играет виртуальную личность. Но смешно. Жду продолжения.
Re[3]: ищу GOSUB
От: BCoder Россия http://bcoder.narod.ru
Дата: 04.07.05 11:12
Оценка:
Здравствуйте, faulx, Вы писали:

F>По-моему, человек явно прикалывается и играет виртуальную личность. Но смешно. Жду продолжения.


Да нет, просто я только две недели назад взялся писать программы на c#, а до этого был программистом на qbasice.


Иван
Re[4]: ищу GOSUB
От: SiAVoL Россия  
Дата: 04.07.05 11:38
Оценка:
Здравствуйте, BCoder, Вы писали:

BC>Да нет, просто я только две недели назад взялся писать программы на c#, а до этого был программистом на qbasice.

долго?
... << RSDN@Home 1.1.4 beta 7 rev. 501>>
Re[4]: ищу GOSUB
От: crackoff Россия  
Дата: 04.07.05 12:11
Оценка:
Здравствуйте, BCoder, Вы писали:


BC>Да нет, просто я только две недели назад взялся писать программы на c#, а до этого был программистом на qbasice.


Ну все, капец тебе
Автор: AndrewVK
Дата: 19.05.05
... << RSDN@Home 1.1.4 beta 6a rev. 436> <под Nightwish — Nightguest>>
Re[3]: ищу GOSUB
От: LinoGE Украина http://users.livejournal.com/_linoge_/
Дата: 05.07.05 15:51
Оценка:
Здравствуйте, faulx, Вы писали:

F>По-моему, человек явно прикалывается и играет виртуальную личность. Но смешно. Жду продолжения.


Поддерживаю
После первого поста было смешно, а потом явно стал просматриваться стеб
ИМХО конечно.

А потом мне на ум пришел случай.
У нас в универе далеко не все кто учился в нашей группе хотели стать программистами, и мало кто что-то хоть отдаленно понимал в программировании. Я их не виню, это им просто не нужно было, а поступали все по разным причинам. Кому поступать было больше не куда, кто в армию не хотел
Так вот, были у нас подобные задачки в универе, и некоторые студенты просто драли эти лабораторки у других, а некоторые отчаянно пытались их сделать. Например, нужно было написать программу которая бы умножала матрицы размером 4x4. Был парень, который вместо того, чтобы массив объявить объявлял кучу переменных типа A11, A12, A13, ... A44.

Не хочу никого обидеть, просто первая мысль была что человек прикалывается, а потом пришел на ум ряд универских случаев. Так что в принципе такое возможно
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[3]: ищу GOSUB
От: Evgeniy13 Россия  
Дата: 05.07.05 19:19
Оценка:
А знаешь, есть такие книжки... там на обложке нарисовано что-то наподобие "Язык C#".
Советую сперва ознакомиться, прежде чем писать подобный код...
Не все в этом мире можно выразить с помощью нулей и единиц...
Re[3]: ищу GOSUB
От: ansi  
Дата: 15.09.05 05:53
Оценка: :)
Здравствуйте, faulx, Вы писали:

F>По-моему, человек явно прикалывается и играет виртуальную личность. Но смешно. Жду продолжения.


Здесь:
http://zhenaprogr.fastbb.ru/index.pl?1-0-0-000<a target="_blank" href="http://findbook.ru/search/?isbn=00004-000-0-0&ozon=rsdn&bolero=rsdnru&biblion=791&booksru=rsdn&zonex=248&piter=3600&myshop=00776">00004-000-0-0</a>-1126727490

Андрей — это я. StarBreeze.... наверное тоже с РСДН
Re[2]: ищу GOSUB
От: Слава Шевцов Россия http://www.rentaguru.ru/
Дата: 15.09.05 08:25
Оценка:
Здравствуйте, SiAVoL, Вы писали:

BC>>Я вот написал программу для расчёта квадратного уравнения.

SAV>все круто! но вот с форматированием... лучше писать так

SAV>
SAV>using System;
SAV>namespace MegaRulezzz{class Class1{static 
SAV>float v1, v2, v3;static string s0;static 
SAV>char i;static int j;static void Main(string[] 
SAV>args){lminus5:s0="Hellow, dummy user !\n";i=
SAV>(char)0;goto l100;lminus4:s0=
SAV>"I am a Great Programm !\n";i=(char)1;goto l100;
SAV>lminus3:s0="My Great Mission is to solve quadratic equation !\n";
SAV>i=(char)2;goto l100;lminus2:s0=
SAV>"New economy algorithm for memory using !!!\n";i=(char)3;goto l100;
SAV>lminus1:l0:s0="Please, dummy user, insert a,b,c koefficients :\n";
SAV>i=(char)4;goto l100;l1:v1=(float)Convert.ToDouble(Console.ReadLine());
SAV>v2=(float)Convert.ToDouble(Console.ReadLine());v3=(float)Convert.
SAV>ToDouble(Console.ReadLine());l3:if(v2*v2<4*v1*v3)goto l4;goto l5;
SAV>l4:s0="You are realy dummy user, your equation havn't solve.\n";
SAV>i=(char)6;goto l100;l4a:s0="Try again, (Y/N) ?\n";i=(char)7;
SAV>goto l100;l4b:v1=(float)Console.Read();Console.ReadLine();
SAV>if(v1==121)goto l0;if(v1==110)goto l9;goto l4a;l5:v3=v2*v2-4
SAV>*v1*v3;v3=(float)Math.Sqrt(v3)/v1/2;v2/=-2*v1;v1=v2+v3;v2=v1-
SAV>2*v3;l7:s0="x1 ="+v1.ToString()+"\n";i=(char)11;goto l100;
SAV>l7a:s0="x2 = "+v2.ToString()+"\n";i=(char)10;goto l100;l8:
SAV>s0="Once again, (Y/N) ?\n";i=(char)9;goto l100;l8a:v1=(float)
SAV>Console.Read();Console.ReadLine();if(v1==121)goto l0;if(v1==
SAV>110)goto l9;goto l8;l9:goto l1000;l100:j=-1;l101:if(j==s0.Length
SAV>-1)goto l110;Console.Write(s0[j=j+1].ToString());System.
SAV>Threading.Thread.Sleep(50);goto l101;l110:if(i==0)goto 
SAV>lminus4;if(i==1)goto lminus3;if(i==2)goto lminus2;if(i==3) 
SAV>goto lminus1;if(i==4)goto l1;if(i==6)goto l4a;if(i==7)goto 
SAV>l4b;if(i==11)goto l7a;if(i==10)goto l8;if(i==9)goto l8a;if
SAV>(i==12)goto l1001;goto lminus5;l1000:s0="Goodbye, user.\n";
SAV>i=(char)12;goto l100;l1001:;}}}
SAV>


Разбирая код нашёл пару логических ошибок. Теперь попробуй найти ты
----------------------------------------------------------------------------------------------
Rentaguru
Re: Здравствуй, Света!
От: chum Россия  
Дата: 15.09.05 08:50
Оценка:
Здравствуйте, BCoder, Вы писали:

BC>Привет, программисты !


И вам не болеть!
Если есть возможность отдать человеку все, не прося ничего взамен — отдай. Если тебе один раз из десяти долг отдадут — будешь богатым.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.