Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2008, 18:17   #1
Evgeni1993
 
Регистрация: 26.11.2008
Сообщений: 4
Восклицание Пожалуйста помогите с решением задач на строки(Delphi)!

Помогите пожалуйста со следующими задачами(Console application):
1) В левом верхнем углу находиться какая-то строка. Строка бежит влево до конца экрана, пока все буквы не исчезнут.
2) На одной строке слева(вначале строки) написано какое-нибудь слово и справа(в конце строки) тоже написано какое-нибудь слово. Они двигаются навстречу друг другу. На середине строки правое слово перекрывает левое и так до конца экрана.
3) Из текста, расположенного в верхней строке, случайным образом начинают падать буквы.
Взаранее Огромное Спасибо!
Evgeni1993 вне форума Ответить с цитированием
Старый 26.11.2008, 18:33   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,861
По умолчанию

Все задачки на изменение позиции текстового курсора. Вот, пример, как можно изменить эту позицию:
Код:
{$APPTYPE CONSOLE}

uses
  Windows;

procedure GotoXY (X, Y: Byte);
// Установить позицию курсора:
var hConsoleOutput: THandle;
    Coord: TCoord;
begin
  hConsoleOutput := GetStdHandle (STD_OUTPUT_HANDLE);
  Coord.X := X - 1;
  Coord.Y := Y - 1;
  SetConsoleCursorPosition (hConsoleOutput, Coord);
end; {proc GotoXY}

begin
  GoToXY (10, 10);
  Write ('A');
  GoToXY (20, 12);
  Write ('B');
  ReadLn;
end.
Arigato вне форума Ответить с цитированием
Старый 26.11.2008, 18:57   #3
Evgeni1993
 
Регистрация: 26.11.2008
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Все задачки на изменение позиции текстового курсора. Вот, пример, как можно изменить эту позицию:
Код:
{$APPTYPE CONSOLE}

uses
  Windows;

procedure GotoXY (X, Y: Byte);
// Установить позицию курсора:
var hConsoleOutput: THandle;
    Coord: TCoord;
begin
  hConsoleOutput := GetStdHandle (STD_OUTPUT_HANDLE);
  Coord.X := X - 1;
  Coord.Y := Y - 1;
  SetConsoleCursorPosition (hConsoleOutput, Coord);
end; {proc GotoXY}

begin
  GoToXY (10, 10);
  Write ('A');
  GoToXY (20, 12);
  Write ('B');
  ReadLn;
end.
Спасибо! А нельзя сделать стандартными операциями над строками (просто мы еще не проходили координаты в delphi в школе), я конечно поробую но не уверен что получиться.
Evgeni1993 вне форума Ответить с цитированием
Старый 26.11.2008, 19:10   #4
Evgeni1993
 
Регистрация: 26.11.2008
Сообщений: 4
По умолчанию

И еще вопрос. Сейчас делаю задачку(тоже на строки). Суть задачи:
Цитата:
Ввести строку, которая состоит из чисел, разделенных запятой или одним пробелом. Если введено неверно, то вывести сообщение об ошибке, если верно то вывести эту строку.
К примеру, верно: "-234 213,23,+4,56" "2123,-123,+23" "135 1" "3333";
неверно: "22+324,23 234" - так как 22+324 нечисло.
Вот эту проверку с расположением плюсов и минусов у меня и не получаеться сделать (тоесть если плюс или минус стоят после запятой или пробела(",+23" ",-2" " +23" " -2") - тогда все в порядке, а если между числами, то это уже разность или сумма, тоесть нечисло, следовательно неверно. Помогите составить проверку.
Evgeni1993 вне форума Ответить с цитированием
Старый 26.11.2008, 19:11   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,861
По умолчанию

Можно. Первые 2 задачи можно сделать, если длинна строки будет = ширине экрана (80 символов по умолчанию). Тогда при каждой итерации придётся делать очистку экрана (а это, кстати, тоже стандартно не заложено).
3-я задача аналогично, но сложнее.
Проще с позиционирование.
А ещё лучше узнать у препода, что он хотел, т.к. стандартно строковыми операциями в консоли такое сделать сложно.
Arigato вне форума Ответить с цитированием
Старый 26.11.2008, 19:12   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,861
По умолчанию

Цитата:
И еще вопрос. Сейчас делаю задачку(тоже на строки).
Решается организацией конечного автомата и 1 проходом.
Arigato вне форума Ответить с цитированием
Старый 26.11.2008, 19:25   #7
Evgeni1993
 
Регистрация: 26.11.2008
Сообщений: 4
По умолчанию

Ничего не понял)) Эту проверку точно нужно сделать простыми операциями. Например как я сделал эту(проверяет чтобы строка состояла тока из цифр, плюса и минуса):
Цитата:
function number1(S:string;i:integer):boolean ;
var k : integer;
begin
k:=ord(S[i]);
if (k=48)or(k=49)or(k=50)or(k=51)or(k= 52)or(k=53)or
(k=54)or(k=55)or(k=56)or(k=57)or(k= 43)or(k=45) then number:=true
else number:=false;
end;
Evgeni1993 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребята помогите пожалуйста с решением задачек в Delphi DJ Kost Помощь студентам 18 16.01.2012 20:51
помогите пожалуйста с решением задач с матрицами очень прошу Денисько54 Помощь студентам 18 04.03.2009 11:35