• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Обработка строк и символов

  • Автор темы Автор темы Sergei47
  • Дата начала Дата начала

Sergei47

Новые
Регистрация
5 Окт 2009
Сообщения
21
Реакции
0
Баллы
0
Обработка строк и символов

язык Паскаль
1.Дана строка, слова в которой разделены хотя бы одним пробелом. Найти первое и последние вхождение (номер позиции в строке символа " * " Если такого символа нет вообще, выдать сообщение)

2.Приняв способ изображения рационального числа в виде записи с двумя полями.
числ, знам: integer;
Написать программу, позволяющая во первых, определить есть ли среди 50 рациональных чисел равные и во-вторых, вычислить наибольшее из данных рациональных чисел (числа не обязательно имеют несократимую форму).
 
язык Паскаль
1.Дана строка, слова в которой разделены хотя бы одним пробелом. Найти первое и последние вхождение (номер позиции в строке символа " * " Если такого символа нет вообще, выдать сообщение)
Не понял, при чем тут разделение слов пробелами, но как-то так:
Код:
VAR
 S:STRING;
 i,Imin,Imax:INTEGER;
 b:BOOLEAN;
BEGIN
 WriteLn('Enter the string:');
 ReadLn(S);
 i:=0;
 Imin:=0;
 Imax:=0;
 b:=FALSE;
 REPEAT
   INC(i);
   IF (S[i]='*') AND (b=FALSE) THEN
    BEGIN
      Imin:=i;
      b:=TRUE;
    END;
   IF (S[i]='*') AND (i>Imin) AND b THEN
    Imax:=i;
 UNTIL i=Length(S);
 IF (Imin>0) AND (Imax>0) THEN
  WriteLn('The first "*" position is ',Imin,'; the last "*" position is ',Imax) 
 ELSE
 IF (Imin>0) AND (Imax=0) THEN
  WriteLn('The only "*" position is ',Imin) 
 ELSE
  WriteLn('There is no "*" in the string');
 ReadLn;
END.

2.Приняв способ изображения рационального числа в виде записи с двумя полями.
числ, знам: integer;
Написать программу, позволяющая во первых, определить есть ли среди 50 рациональных чисел равные и во-вторых, вычислить наибольшее из данных рациональных чисел (числа не обязательно имеют несократимую форму).

Код:
TYPE
 Rat=RECORD
      Nom:BYTE;
      Denom:BYTE;
     END;
VAR
 Num:ARRAY[1..50] of RAT;
 i,j,Imax:INTEGER;
 MAX:REAL;
BEGIN
 Randomize;
 FOR i:=1 TO 50 DO
  WITH Num[i] DO
   BEGIN
    Nom:=Random(30);
    Denom:=Random(29)+1;
   END;

 MAX:=-1.0;
 FOR i:=1 TO 50 DO
  WITH Num[i] DO
   IF Nom/Denom>MAX THEN
    BEGIN
     MAX:=Nom/Denom;
     Imax:=i;
    END;

 FOR i:=0 TO 4 DO
  BEGIN
   FOR j:=1 TO 10 DO
    Write(Num[10*i+j].Nom:2,'/',Num[10*i+j].Denom:2,'  ');
   Writeln;
  END;
 WriteLn('The largest value is ',Num[Imax].Nom:2,'/',Num[Imax].Denom:2);

 FOR i:=1 TO 50 DO
  FOR j:=i+1 TO 50 DO
   IF ROUND(Num[i].Nom/Num[i].Denom*1000000)=
      ROUND(Num[j].Nom/Num[j].Denom*1000000) THEN
    WriteLn('Number ',i,' is equal to number ',j);

 ReadLn;
END.
 
Спасибо большое..
 
Назад
Сверху