Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 15.06.2011, 09:29   #1 (permalink)
LizarD
Новичок
 
Регистрация: 11.06.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Post Три задания по Pascal'ю

1) Написать программу, которая в массиве A[N] находит второе по величине число.
2) В рускоязычном текстовом файле, определить, сколько раз в нем встречается самое короткое слово.
3) В прямой 4х угольной призме провести сечение, проходящее через сторону нижнего основания под углом 60 градусов к нему.
LizarD вне форума   Ответить с цитированием

Старый 15.06.2011, 09:29
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Могу вам помочь этими ссылками, прочитайте внимательно

Курсовые задания по информатике в VB
Задания по работе с палитрой компонентов Additional. Delphi
Решение задания по С#, исправьте, что не так.
Назначение задания для выполнения в определённое время
Помогите решить задания по информатике.
Помогите, пожалуйста, решить задания по Паскалю

Старый 15.06.2011, 10:42   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Так. Прежде всего, мне кажется, Вы несколько превратно поняли суть работы нашего форума. Из того, что Вам помогли с простенькой задачкой, вовсе не следует, что отныне можно перестать учиться, а все полученные задания тупо вываливать сюда, нажимать кнопочку и ждать, когда появятся готовенькие решения. Решили жизнь чужим умом прожить? Не выйдет. Так что мой Вам совет - беритесь за ум, пока не поздно. За собственный.
Теперь по задачам.
1. Тривиальное упражнение школьного уровня. Давайте самостоятельно.
2. Тут бы я Вам помог, если бы не условие, что текст русский. Заморачиваться с множественными кодировками кириллицы (у меня - DOS-Паскаль) - извините, не буду. Если бы текст был латиницей, то - пожалуйста. А так - нет.
3. Тут Вам немного повезло. Недавно я решал такую задачку, с единственной разницей, что угол был не 60°, а 30°. Поэтому можете взять решение отсюда:
В прямой четырехугольной призме провести сечение, проходящее через сторону нижнего ос, пост #10, заменив там строки
ZC:=100*tan(Pi/6);
ZD:=50*tan(Pi/6);
на
ZC:=100*tan(Pi/3);
ZD:=50*tan(Pi/3);
Должно получиться так:
Миниатюры
aa101.jpg  
Vladimir_S вне форума   Ответить с цитированием
Старый 16.06.2011, 00:06   #3 (permalink)
LizarD
Новичок
 
Регистрация: 11.06.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Разумеется, я и сам пробывал решать эти задачи...

1. Дошел до того, что выстраиваю все члены массива по убыванию, но если массив содержит более 1000 элементов? Это уже не удобно...
2. Владимир, я думаю, что латиницы будет мне достаточно, что бы понять с чем мне работать, ведь, как я понимаю, дело в кодировках?
3. Благодарю!

Хи: Самое трудное решается быстрее...
LizarD вне форума   Ответить с цитированием
Старый 16.06.2011, 09:35   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от LizarD Посмотреть сообщение
1. Дошел до того, что выстраиваю все члены массива по убыванию, но если массив содержит более 1000 элементов? Это уже не удобно...
Можно, конечно, и так, но я бы решал иначе:
1. Находим максимальный элемент стандартным алгоритмом.
2. Повторяем, поставив доп. условие, что следующий "максимальный" элемент должен быть, конечно, больше остальных, но меньше уже найденного в п.1.
Или, как вариант, все элементы массива, имеющие максимальное значение, заменить, например, нулями, после чего повторить процедуру.
3. Выводим результат поиска по п.2.
Vladimir_S вне форума   Ответить с цитированием
Старый 16.06.2011, 11:16   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от LizarD Посмотреть сообщение
2) В рускоязычном текстовом файле, определить, сколько раз в нем встречается самое короткое слово.
Ладно, вот Вам универсальный код, годится и для латиницы, и для кириллицы. Имя файла и путь подставьте, естественно, свои:
Код:
Const
 Smb=[' ',',','.','?','!',':',';','"','(',')','-'];
VAR
 S:String;
 W:Array[1..1000] of String;
 i,j,i1,i2,Ifix:Integer;
 leng,N,N_short:Byte;
 f:Text;

BEGIN
 Assign(f, 'D:\fff.txt');
 ReSet(f);
 N:=0;
 REPEAT
  ReadLn(f,S);
  i:=0;
  Repeat
   Repeat
    Inc(i);
   Until (Not (S[i] in Smb)) or (i=Length(S));
   If i<Length(S) then
    begin
     i1:=i;
     While (Not (S[i] in Smb)) and (i<Length(S)) do
      begin
       Inc(i);
       i2:=i;
      end;
    If (S[i] in Smb) and (i<Length(S)) then
      begin
       Inc(N);
       W[N]:=Copy(S,i1,i2-i1);
      end;
     If (Not (S[i] in Smb)) and (i=Length(S)) then
      begin
       Inc(N);
       W[N]:=Copy(S,i1,i-i1+1);
      end;
    end;
  Until i=Length(S);
 UNTIL EoF(f);
 Close(f);

 leng:=255;
 For i:=1 to N do
  If Length(W[i])<leng then
   begin
    Ifix:=i;
    leng:=Length(W[i]);
   end;
 Writeln('The shortest word is "'+W[Ifix]+'"');
 Writeln;
 N_short:=0;
 For i:=1 to N do
  If W[i]=W[Ifix] then  Inc(N_short);
 Writeln('It occurs ',N_short,' times');
 ReadLn
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 21.06.2011, 09:02   #6 (permalink)
LizarD
Новичок
 
Регистрация: 11.06.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Благодарю, Владимир!
LizarD вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 01:25.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.