Воскресенье, 28 Апреля 2024, 04:00

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » Lertmind [593]
Результаты поиска
LertmindДата: Среда, 31 Декабря 2014, 00:11 | Сообщение # 501 | Тема: Library и Temp системные папки, как уменьшить размер?
заслуженный участник
Сейчас нет на сайте
Цитата
А то я попробовал их обоих удалить, так юнити стал выдавать кучу ошибок - следовательно не выход!

Что за ошибки?
Раньше на форуме юнити писали, что удалять Library нельзя, портится проект, но сейчас мне кажется изменилось, обычно в проектах после удаления всё нормально восстанавливается.
В примерах к книгам эти папки не добавляют и всё работает, возможно надо что-то сделать экстраординарное, чтобы папка Library была важна.
LertmindДата: Вторник, 04 Ноября 2014, 06:20 | Сообщение # 502 | Тема: Задание по C#
заслуженный участник
Сейчас нет на сайте
В string Postfix(string Input) внутри if (Char.IsDigit(Input[i])) {} записать:
Код
if (i > 0 && !Char.IsDigit(Input[i - 1]))
     x += " ";
x += Convert.ToString(Input[i]);

Тогда в постфиксной записи будут пробелы между числами, например для "(10+1)*23" будет " 10 1+ 23*".

В int Equal(string Input) объявляем переменную string number = ""; и вместо if (Char.IsDigit(Input[i])) {} else { записать:
Код
if (Char.IsDigit(Input[i]))//Если число то,    
{
     number += Input[i];
     if (i + 1 == Input.Length || !Char.IsDigit(Input[i + 1]))
     {
         MyStack.Push(int.Parse(number));
         number = "";
     }
}
else if (Prior(Input[i]) > 0)//иначе
{

В number будет собираться число. Если следующий символ не цифра или конец строки, то добавляем в стек число (можешь написать свою функцию преобразования из строки в число вместо int.Parse(), хотя ты зачем-то уже написал CharsArrToInt() ). Проверка if (Prior(Input[i]) > 0) нужна, чтобы проходили только символы операций, а всякие пробелы и прочий мусор игнорировались.

Полный код (протестил только для (10+1)*23, должно работать для всего):
Код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
     class Program
     {
         static void Main(string[] args)
         {
             string m = Console.ReadLine();
             Console.WriteLine("Эта же запись но в посфиксном виде " + Postfix(m));
             Console.WriteLine("Ответ " + Equal(Postfix(m)));
             Console.ReadLine();//Задержка экрана
         }
         //
         //Функция превращения строки в постфиксную запись
         static string Postfix(string Input)
         {
             var MyStack = new Stack<char>();//Объявлен стек для операций
             string x = null;
             int y;
             //Цикл превращение строки в постфиксную
             for (int i = 0; i < Input.Length; i++)
             {

                 if (Char.IsDigit(Input[i]))//Проверяем входной символ, если число
                 {
                     if (i > 0 && !Char.IsDigit(Input[i - 1]))
                         x += " ";
                     x += Convert.ToString(Input[i]);
                 }
                 else //Если символ, производим его разбор
                 {
                     y = Prior(Input[i]);// Назначаем приоритет для входящего символа
                     if (MyStack.Count == 0) //Если стек пустой
                     {
                         MyStack.Push(Input[i]);//Закидываем знак в стек
                     }
                     else //Если стек имеет какие либо значения
                     {
                         if (y != Prior(MyStack.Peek()))//Если символы по приоритету не ровны
                         {
                             if (y > Prior(MyStack.Peek()))//Если приоритет входящего символа больше имеющегося
                             {
                    MyStack.Push(Input[i]);
                             }
                             else
                    if (y < Prior(MyStack.Peek()))
                    {

                    if (y == 2) //Если символ является закрывающей скобкой
                    {
                    if (MyStack.Peek() == '(') //Если на вершине стека находится открывающая скобка
                    {
                    MyStack.Pop();
                    }
                    else
                    if (MyStack.Peek() != '(') //Если не равен открывающей скобке
                    {
                    while (MyStack.Peek() != '(')//Пока на вершине стека не будет открывающей скобки,
                    {
                    x += MyStack.Pop(); //Выталкиваем в строку символы
                    }
                    MyStack.Pop();
                    }
                    }
                    else
                    {
                    if (y == 1) //Если равен открывающей скобке
                    {
                    MyStack.Push(Input[i]);
                    }
                    else
                    {
                    x += MyStack.Pop();
                    MyStack.Push(Input[i]);
                    }

                    }
                    }
                         }
                         else
                             if (y == Prior(MyStack.Peek()))//Если символы ровны
                             {
                    x += MyStack.Pop();//Из вершины стека выкидываем символ в строку
                    MyStack.Push(Input[i]);//Кладем в стек новый символ
                             }

                     }
                 }

             }
             while (MyStack.Count > 0)//Выкидываем остаток символов из стека
             {
                 x += MyStack.Pop();
             }
             return x;//Возвращаем строку в постфиксной записи
         }

         //
         //Функция подсчета    
         static int Equal(string Input)
         {
             var MyStack = new Stack<int>();
             int a = 0, b = 0;
             string number = "";
             for (int i = 0; i < Input.Length; i++)
             {
                 if (Char.IsDigit(Input[i]))//Если число то,    
                 {
                     number += Input[i];
                     if (i + 1 == Input.Length || !Char.IsDigit(Input[i + 1]))
                     {
                         MyStack.Push(int.Parse(number));
                         number = "";
                     }
                 }
                 else if (Prior(Input[i]) > 0)//иначе
                 {
                     Console.WriteLine("В стаке кол-во элементов " + MyStack.Count);
                     a = MyStack.Pop();//Выкидываем первое число
                     Console.WriteLine("Первое число " + a);
                     b = MyStack.Pop();//Выкидываем второе число
                     Console.WriteLine("Второе число " + b);

                     switch (Input[i])//Переключатель для определения действий над числами
                     {
                         //Модуль возведения в степень не работает правильно (работает только с положительными числами)
                         case '^': Console.WriteLine("Знак операции ^");
                             a = Convert.ToInt32(Math.Pow(a, b));
                             Console.WriteLine("Значение x " + a);
                             MyStack.Push(a); break;
                         case '*': Console.WriteLine("Знак операции *");
                             a = b * a;
                             Console.WriteLine("Значение x " + a);
                             MyStack.Push(a); break;
                         case '/': Console.WriteLine("Знак операции /");
                             if (a == 0)
                             {
                    a = 0;
                             }
                             else
                             {
                    a = b / a;
                             }
                             Console.WriteLine("Значение x " + a);
                             MyStack.Push(a); break;
                         case '+': Console.WriteLine("Знак операции +");
                             a = b + a;
                             Console.WriteLine("Значение x " + a);
                             MyStack.Push(a); break;
                         case '-': Console.WriteLine("Знак операции -");
                             a = b - a;
                             Console.WriteLine("Значение x " + a);
                             MyStack.Push(a); break;
                     }
                 }
             }
             return a;
         }

         //Функция обработки числа из char в int
         static int CharsToInt(char Input)
         {
             int x = 0, y = 0;
             //кол-во итераций в данном случае равно a.Length

             x = Input - '0'; //Переводит из char в int число справа на левово
             y = y * 10 + x;

             return y;
         }

         //
         //Функция обработки числа из char[] в int
         static int CharsArrToInt(char[] Input)
         {
             int x = 0, y = 0;
             //кол-во итераций в данном случае равно a.Length
             for (int power = 0; power < Input.Length; power++) //Цикл обработки числа из Char в Int
             {
                 x = (Input[power] - '0'); //Переводит из char в int число справа на левово
                 y = y * 10 + x;
             }
             return y;
         }
         //
         //Функция приоритета знаков
         static int Prior(char Input)
         {
             switch (Input) //Получаем на входе символ, и возвращаем его приоритет.
             {
                 case '^': return 6;
                 case '*': return 5;
                 case '/': return 5;
                 case '+': return 4;
                 case '-': return 4;
                 case '=': return 3;
                 case ')': return 2;
                 case '(': return 1;
                 default: return 0;
             }

         }
     }
}

Добавлено (04.11.2014, 06:20)
---------------------------------------------
На самом деле, твой код не работает с унарным минусом ("-1" фейл). Ещё ты неправильно возводишь в степень, во-первых, надо записать a = Convert.ToInt32(Math.Pow(b, a));, во-вторых, возведение в степень правоассоциативная операция и для, например 2^2^3, должно быть 2^(2^3), а не (2^2)^3 как в твоей программе, опять же прочитай внизу здесь. Замечу, что для "0-2^2^3" должен быть результат -256, а для "(0-2)^2^3" уже 256 (если сделаешь унарный минус, то 0 приписывать не надо).

LertmindДата: Пятница, 24 Октября 2014, 21:59 | Сообщение # 503 | Тема: Запекание света и теней в реальном времени
заслуженный участник
Сейчас нет на сайте
Думаю нельзя, это лишено смысла. Запекают всегда заранее, ты же не хочешь включать в дистрибутив игры lightmapper – Beast.
Тени там же запекаются, как ты хочешь - нельзя. Что ты хочешь звучит возможным, но мне кажется сложно реализуемо и того не стоит.
LertmindДата: Среда, 22 Октября 2014, 21:28 | Сообщение # 504 | Тема: Small basic -> Visual studio ?
заслуженный участник
Сейчас нет на сайте
Советую изучать современные нормальные языки типа C# или Visual Basic .NET. Если у тебя написана на Small Basic программа, то её можно портировать в Visual Basic (какой версии не знаю, там не написано, думаю VB.NET). Хотя Small Basic позиционируют как для детей и легко усвояемое, у C# и VB.NET больше сообщество и следовательно тебе смогут помочь.
LertmindДата: Пятница, 17 Октября 2014, 20:44 | Сообщение # 505 | Тема: Сколько занимает один полигон оперативной памяти?
заслуженный участник
Сейчас нет на сайте
falcoware, это минимум. Если учитывать данные связанные с вершинами (вектор нормали, цвет и т.п.), то больше.
LertmindДата: Пятница, 17 Октября 2014, 00:37 | Сообщение # 506 | Тема: Как ограничить поворот?
заслуженный участник
Сейчас нет на сайте
У MANMANA хороший код, только Time.deltaTime не забудь.
LertmindДата: Вторник, 14 Октября 2014, 12:44 | Сообщение # 507 | Тема: Числа Армстронга
заслуженный участник
Сейчас нет на сайте
Ramilyanamana, конечно она не права, не трать зря время на размышления, просто сделай своему преподу-неудачнику что она хочет.
LertmindДата: Воскресенье, 12 Октября 2014, 23:08 | Сообщение # 508 | Тема: Как на SFML изменить язык?
заслуженный участник
Сейчас нет на сайте
jone157, поставил сейчас для VS2010 SFML-2.1, взял пример из SFML-2.1\examples\pong, заменил шрифт на Arial (для русской поддержки), как и советовали использовал префикс L и всё работает. Исходник в VS у меня в кодировке 1251. Вот кусок кода из примера, изменил только шрифт и добавил L:
Код
// Load the text font
sf::Font font;
if (!font.loadFromFile("resources/arial.ttf"))
     return EXIT_FAILURE;

// Initialize the pause message
sf::Text pauseMessage;
pauseMessage.setFont(font);
pauseMessage.setCharacterSize(40);
pauseMessage.setPosition(170.f, 150.f);
pauseMessage.setColor(sf::Color::White);
pauseMessage.setString(L"Добро пожаловать в SFML pong!\nPress space to start the game");
LertmindДата: Пятница, 10 Октября 2014, 12:01 | Сообщение # 509 | Тема: Задание по C#
заслуженный участник
Сейчас нет на сайте
Цитата gorlumfan ()
но как сказал человек давший мне задание. Делаться это должно проще, чем эти 2 метода.
Плохой учитель у тебя, БЕГN. А вообще, раз он знает лучше, пусть тебе лучше и объяснит чего хочет.
LertmindДата: Пятница, 10 Октября 2014, 04:43 | Сообщение # 510 | Тема: 2D Physics и космические корабли
заслуженный участник
Сейчас нет на сайте
Возможно я что-то не понял, но если тебе не надо покидать корабль, то можно использовать две камеры. Где-то у тебя есть статический корабль, там игрок двигается под действием сил, так же есть динамический объект, на котором рисуется этот статический корабль, и он тоже движется под действием сил. Получается, что если в статическом корабле персонаж смотрит в нос корабля, а динамический корабль поворачивается, то игрок всё равно смотрит в нос. С двумя камерами не работал, скорее всего понадобится рендер в текстуру из Pro версии.
LertmindДата: Четверг, 09 Октября 2014, 21:31 | Сообщение # 511 | Тема: Инвертирование вектора
заслуженный участник
Сейчас нет на сайте
Renus, работает всё:
Код
var vector = new Vector3(1,1,1);
Debug.Log (-vector); // -1,-1,-1
Debug.Log (vector * -1); // -1,-1,-1


Сообщение отредактировал Lertmind - Четверг, 09 Октября 2014, 21:32
LertmindДата: Четверг, 09 Октября 2014, 09:17 | Сообщение # 512 | Тема: Задание по C#
заслуженный участник
Сейчас нет на сайте
Самый простой способ преобразовать в обратную польскую нотацию и посчитать. Она может быть неявно в алгоритме. Почти готовый код на C++ здесь. Ещё можно написать простой калькулятор без скобок, потом внутренние выражения в скобках заменять посчитанными значения, например 3*(8-(9-3)+2*2)+1 => 3*(8-6+2*2)+1 => 3*6 + 1 => 19, но это хреновый способ в плане производительности.
LertmindДата: Понедельник, 06 Октября 2014, 19:48 | Сообщение # 513 | Тема: Задачи по Borland C++
заслуженный участник
Сейчас нет на сайте
Если не разобрался:
Код
// Представление числа как сумма троек и пятёрок
#include <iostream>
using namespace std;
// Описание функции
void PrintCombinations(const int a, const int b, const int y);

int main()
{
       int a = 5;
       int b = 3;
       int number = 300;
          
       PrintCombinations(a, b, number);

       return 0;
}
// Реализация функции
void PrintCombinations(const int a, const int b, const int num)
{
       if (a + b > num)
           return;
       for (int modulo = num; modulo >= 0; modulo -= a) {
           if (modulo % b == 0) {
               cout << a << "*" << (num - modulo) / a << " + " << b << "*" << modulo / b << endl;
           }
       }
}


Сообщение отредактировал Lertmind - Понедельник, 06 Октября 2014, 19:50
LertmindДата: Понедельник, 06 Октября 2014, 02:32 | Сообщение # 514 | Тема: Кол-во пятниц 13[C++]
заслуженный участник
Сейчас нет на сайте
Цитата falcoware ()
да кстати колчиество месяцев в календаре может варьироваться от 12 до 14. Вот от этого тоже надо плясать!

Прекрати. "Согласно григорианскому календарю, год делится на 12 месяцев, продолжительностью от 28 до 31 дня".

Добавлено (06.10.2014, 02:32)
---------------------------------------------
Ладно, falcoware, я больше не буду спорить, я уже понял что ты живёшь по другому календарю, который я не знаю.

LertmindДата: Понедельник, 06 Октября 2014, 02:26 | Сообщение # 515 | Тема: Кол-во пятниц 13[C++]
заслуженный участник
Сейчас нет на сайте
falcoware, ты наверно не силён в логике. Тут даже не нужна математика, нельзя по одному числу определить какой год.

Сообщение отредактировал Lertmind - Понедельник, 06 Октября 2014, 02:27
LertmindДата: Понедельник, 06 Октября 2014, 02:18 | Сообщение # 516 | Тема: Кол-во пятниц 13[C++]
заслуженный участник
Сейчас нет на сайте
Ещё раз, falcoware:
1. У нас Григорианский календарь. Распределение високосных годов:
* год, номер которого кратен 400 — високосный;
* остальные годы — год, номер которого кратен 100 — невисокосный;
* остальные годы — год, номер которого кратен 4 — високосный.
2. Программа получает на вход (кроме бесполезных количества месяцев) с чего начинается год 1-7.
3. Я ввожу 7 для 2012 года и ввожу 7 для 2017 года, но ты никак не определишь какой год я ввёл.


Сообщение отредактировал Lertmind - Понедельник, 06 Октября 2014, 02:19
LertmindДата: Понедельник, 06 Октября 2014, 02:05 | Сообщение # 517 | Тема: Кол-во пятниц 13[C++]
заслуженный участник
Сейчас нет на сайте
Я думаю, что WhoAmI, ошибся в "Первое - кол-во месяцев в календаре", а количество дней в году или типа того, чтобы определить високосность года.
LertmindДата: Понедельник, 06 Октября 2014, 01:56 | Сообщение # 518 | Тема: Кол-во пятниц 13[C++]
заслуженный участник
Сейчас нет на сайте
Цитата falcoware ()
falcoware, путем простых заключний приходим что числа 1,4,7 високосные года. Уловил?

Ещё раз прочитай, что я написал, 7 - это воскресенье, там и там 7, но один-то невисокосный.


Сообщение отредактировал Lertmind - Понедельник, 06 Октября 2014, 01:56
LertmindДата: Понедельник, 06 Октября 2014, 01:52 | Сообщение # 519 | Тема: Кол-во пятниц 13[C++]
заслуженный участник
Сейчас нет на сайте
falcoware, контрпример: 2012 год, Воскресенье, Високосный и 2017 год, Воскресенье, Невисокосный. Уловил?

Сообщение отредактировал Lertmind - Понедельник, 06 Октября 2014, 01:54
LertmindДата: Понедельник, 06 Октября 2014, 01:32 | Сообщение # 520 | Тема: Кол-во пятниц 13[C++]
заслуженный участник
Сейчас нет на сайте
Цитата falcoware ()
Не работает для високосных лет.
Я так и написал.
Цитата falcoware ()
Тут нужен универсальный метод.
По входным данным из условия задачи нельзя определить какой год. Если надо, то дописать для високосных не составит труда.
Форум игроделов » Записи участника » Lertmind [593]
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг