Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Вычисление количества лексем в строке с возможностью задания списка символов-разделителей

Автор: Кибер Чёрт 19.06.2006 20:02

Помогите нужно срочно решить следующею задачу:

---------------------------------------------------------------------------------------------------------------
I. Составить программу на языке Pascal, описывающую приведенную ниже проблемную ситуацию и реализующую следующие функции
1.1. Проблемная ситуация:
В области прикладного программирования необходимо создать модуль (.ТРU). содержащий перечисленные ниже процедуры, функции и т.д.. а также тестирующую программу, наглядно демонстрирующую возможности этого модуля.
1.2.ФУНКЦИИ программы:
Вычисление количества лексем в строке с возможностью задания списка символов-разделителей
Выбор (и возврат в качестве результата функции) лексемы по ее номер}
Замена лексемы с заданным номером на другую лексем}
Проверка наличия подстроки в строке и возврат в качестве результата (в случае обнаружения) номера позиции, с которой начинается подстрока
Преобразование символов из строчных в прописные и наоборот, включая символы кириллицы
---------------------------------------------------------------------------------------------------------------


Народ нужно действительно срочно а то меня из технаря на… вышибут. Войдите в положение, помогите кто знает. Я уже весь инет облазил и не чего подобного не нашёл.

Автор: volvo 19.06.2006 20:17

Ну, а чем GetWords вот отсюда: http://forum.pascal.net.ru/index.php?s=&showtopic=2361&view=findpost&p=28157

не устраивает? Возможность задать список разделителей - есть, заносишь лексемы (они же - слова) в массив, следовательно, можешь обратиться к ним по порядковому номеру...

Цитата
Преобразование символов из строчных в прописные и наоборот, включая символы кириллицы
в том же топике, чуть ниже - функции StrUpper/StrLower...

Автор: Кибер Чёрт 19.06.2006 22:27

Большёе спасибо! Но я забыл упомянуть одно важное обстоятельство в поскале я полный ТУФРАН!!! и большая часть из того что там написано для меня «китайская грамота».

Мне нужен полностью готовый программный код этой и других(см. скриншот ниже) задач а не его обрывки которые нужна собирать как пазл.

Я понимаю что не кто проста так не будет заморачиваться с моими задачами, денег у меня к сожалению немного около 2 баксов на WebMoney Keeper осталось но я практически профи в раскрут сайтов, обладаю достаточно приличной коллекцией прог для раскрут в инете (от Page Promoter 6.4 до Smart Poster 2.35 и WWW.NAROD.RU) их собственно и предлагаю в качестве оплаты, эти проги подымут Ваш форум да и другие Ваши проекты на верхние строчки в поисковиках и привлекут толпу новых посетителей.

Программы нужны срочно в течении 2 дней крайней срок утро 22 числа.
УМОЛЯЮ !!! помогите, проста у меня действительно критическая ситуация я пропустил в техноре почти месяц (попал в аварию лежал в больнице) я уже у всех просил кого мог Вы моя последняя надежда, если не сдам до четверга меня вышибут на…

Вот ещё несколько задач которые мне нужно позарез решить:



Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Zxzc 20.06.2006 4:11

Что понял - то сделал...
Вот что понял: то что написано про ввод - это наверное для всех программ... Ввод я так понимаю с клавиатуры...
Числа A b c d то бишь...
Что не понял: что это за цифры вокруг матрицы??!
Меню на какую хотя бы тему? Снеговик вообще ввел в ступор...

Цитата
Предусмотреть предупреждающие надписи на реакцию программы

Это еще что?

А пока:
var a,b,c,d,z:real;
ok:boolean;
{I think real 'cose we'll must counted digitals in thats variables}
begin
{$I-}
ok:=false;
repeat
readln(a,b,c,d);
case IOResult of
0: OK:=true;
106: writeln('To, chto vi vveli ne yavlyaetsya chislom tipa real... Povtorite vvod vsex chisel...');
end
until Ok;
{$I+}
z:=sqrt(c+d)/sqrt(a+b)+sqrt(d+a)/sqrt(b+a);
writeln(z);
end.

Автор: Gregory512 20.06.2006 15:08

По поводу матрицы!
запускаем прогу вводим размерность матрицы , далее вводим цифры....
если вводим буквы-то прога говорит что ошибка и требует ввод чисел снова...
в матрице на N-местах как на рисунке должны быть двух значные числа...

далее прога запрашивает на какие числа поменять первую строку.. (пример чисел над матрицей..)
и просит ввод именно таких зисел(точнее разрядность 2-х значные и 3-хзначние)

аналогично и с со столбцом...

и выводит на экран начальную матрицу строу столбец и конечную матрицу.....


Добавлено (через 8 минут)
по поводу меню...
Не обязательно снеговик!!!
это может быть и меню типа
---------------------------------------
прога 1 | прога 2 | прога 3 |
---------------------------------------
|
------------
запуск |
------------
и место снеговика можно запустить алгоритм примера или матрицы.....

а точнее это 1 прога меню и при выборе определенного окошка меню открывается прога( :-) )...

Добавлено (через 6 минут)

Цитата(Zxzc @ 20.06.2006 0:11) *

  readln(a,b,c,d);
case IOResult of
0: OK:=true;
106: writeln('To, chto vi vveli ne yavlyaetsya chislom tipa real... Povtorite vvod vsex chisel...');
end
until Ok;
{$I+}
z:=sqrt(c+d)/sqrt(a+b)+sqrt(d+a)/sqrt(b+a);
writeln(z);
end.

но при задании а=4 в=-10 и в примере sqrt(a+b) корень из минуса не извлекается - ошибка... :-)


Добавлено (через 5 минут)
народ понимающий в паскале!
есть прога тест но надо ве время теста прога предлагает сохнаниться и выйти из теста
при следующем запуске прога спрашиваетимя.. и предлагает закончить тест!!!
подскажите такой алгоритм есть??
вот код проги..

Код
uses crt;
var
f1,t:text;
name,t1,t2:string;
A,c,i:integer;
label 1;
begin       clrscr;
  i:=0;
  assign (f1,'vop.txt');assign (t,'result.dat');
  reset(f1); reset(t);
writeln ('Вы включили небольшой тест!');
writeln ('Как вас зовут?');readln (name);
clrscr;
writeln('сделайте свой выбор');
writeln('1-пройти тест');
writeln('2-Посмотреть результаты');
writeln('3-Выход');readln©;
case c of
1 : begin  CLRSCR;
   WHILE A<3 DO BEGIN  readln(f1,t1);writeln (t1);
   A:=A+1;end; readln©;if c=3 then i:=i+1;
   clrscr; a:=0;
   WHILE A<3 DO BEGIN  readln(f1,t1);writeln (t1);
   A:=A+1;end; readln©;if c=1 then i:=i+1;
clrscr; a:=0;
   WHILE A<3 DO BEGIN  readln(f1,t1);writeln (t1);
   A:=A+1;end; readln©;if c=2 then i:=i+1;
clrscr; a:=0;
   WHILE A<3 DO BEGIN  readln(f1,t1);writeln (t1);
   A:=A+1;end; readln©;if c=1 then i:=i+1;
clrscr; a:=0; clrscr; a:=0;
   WHILE A<3 DO BEGIN  readln(f1,t1);writeln (t1);
   A:=A+1;end; readln©;if c=2 then i:=i+1;
clrscr; a:=0;
   WHILE A<3 DO BEGIN  readln(f1,t1);writeln (t1);
   A:=A+1;end; readln©;if c=2 then i:=i+1;
clrscr;
writeln('Вы набрали:',i,' правильных ответа из 6 ');
append (t);

write (t,name); write (t,' '); writeln (t,i);
close(t); end;
2 : begin   clrscr;
        reset(t);
      repeat
        readln(t,t1);
        writeln(t1);
      until eof(t);
      writeln; readkey; exit;
    end;
3 : EXIT; else exit; end;
readkey;
end.

Автор: Кибер Чёрт 20.06.2006 20:56

Большёе спасибо Zxzc программу с формулой я доделал работает она отлично.

Код

Program I3;
uses  crt;
Var
ok:boolean;
Z:real;
A,B,C,D:integer;
label 1;
Begin
1:clrscr;textcolor(15);
writeln ('//===========================================================\\');
writeln ('||        Z=sqrt(C+D)/sqrt(A+B)+sqrt(D+A)/sqrt(B+A)          ||');
writeln ('||             Введите значение чисел A,B,C,D                ||');
writeln ('||   Cуммы чисел A+B, A+D, C+D  должны быть положительны.    ||');
writeln ('\\===========================================================//');

{$I-}
ok:=false;
repeat
A:=0; B:=0; C:=0; D:=0;
write('A:='); read(A);
write('B:='); read(B);
write('C:='); read(C);
write('D:='); read(D);

  case IOResult of
   0: OK:=true;
   106: writeln('Ошибка !!! Повторите ввод чисел');
  end
until Ok;
{$I+}
if C+D<0 then begin writeln('Ошибка !!! Нажмите "Enter" и повторите ввод чисел');readkey; goto 1 end;
if A+B<0 then begin writeln('Ошибка !!! Нажмите "Enter" и повторите ввод чисел ');readkey; goto 1 end;
if A+D<0 then begin writeln('Ошибка !!! Нажмите "Enter" и повторите ввод чисел');readkey; goto 1 end;
Z:=0;
Z:=sqrt(C+D)/sqrt(A+B)+sqrt(D+A)/sqrt(B+A);
textcolor(5);
write ('Ответ:'); write (Z:1:0);
readkey;
END.