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


Ответ
 
Опции темы Опции просмотра
Старый 29.05.2014, 16:58   #1 (permalink)
Зюня,0
Member
 
Регистрация: 29.05.2014
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Smile Pascal

Здравствуйте!Мне очень нужна ваша помощь не могу решить задачи Pascal
1. Найти минимальный элемент из элементов массива, расположенных на нечетных местах.
2. Каждый элемент массива заменить произведением его делителей.
(их нужно сделать в процидурах)
3. Определить, сколько раз в строке встречается данное слово.А эту я решила, но мне сказали что не правильно только я не могу понять как ее переделать посмотрите пожалуйста может что то можно с ней сделать:

program lab03;
var a, b: string;
k, i: integer;
begin write('text:');
readln(a);
write('slovo: ');
readln(b);
k := 0;
while pos(b, a) > 0 do
begin k := k + 1;
delete(a, pos(b, a), length(b));
end;
writeln(k);
readln;
end.
Зарание огромное СПАСИБО!!!!!
Зюня,0 вне форума   Ответить с цитированием

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

Скорее всего тут можно найти ответ

Pascal ABC
Pascal

Старый 29.05.2014, 17:14   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

1 задача у тебя вроде так:
Цитата:
program prog;
var a:array[1..15]of integer;
i,min:integer;
begin
for i:=1 to 15 do
read(a[i]);
min:=a[1];
for i:=2 to 15 do
if odd(i) then
if a[i]<min then min:=a[i];
writeln(min);
end.
Gruvi вне форума   Ответить с цитированием
Старый 29.05.2014, 17:25   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Хорошо, посмотрю - но позже. Вечером или завтра.
Что касается задачки 3, то отвечайте тем, кто "сказали", жестко. Пусть конкретно укажут, что им не нравится. Потому что программа написана абсолютно правильно, грамотно и даже остроумно. Ничего переделывать не нужно. Это я Вам авторитетно, как программист, заявляю.
Vladimir_S вне форума   Ответить с цитированием
Старый 29.05.2014, 17:57   #4 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Присоединяюсь к Владимиру. Программа написана абсолютно верно.
Gruvi вне форума   Ответить с цитированием
Старый 29.05.2014, 23:19   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Зюня,0 Посмотреть сообщение
2. Каждый элемент массива заменить произведением его делителей. (их нужно сделать в процидурах)
Пожалуйста. Надеюсь, и функция подойдет. Если нет - черкните, переделаем в процедуру (кстати, она пишется именно через "е").
Код:
Const
 N=20;

Var
 A:Array[1..N] of Integer;
 i:Integer;

Function Prod(M:Integer):Integer;
var j,P:Integer;
begin
 if M<4 then P:=M
 else
 begin
  P:=1;
  for j:=M downto 2 do
   if (M mod j)=0 then P:=P*j;
 end;
 Prod:=P;
end;

Begin
 Randomize;
 Writeln('Initial array:');
 for i:=1 to N do
  begin
   A[i]:=Random(16)+1;
   write(A[i]:8);
  end;
 writeln;
 writeln;
 Writeln('New array:');
 for i:=1 to N do
  begin
   A[i]:=Prod(A[i]);
   write(A[i]:8);
  end;
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 30.05.2014, 10:02   #6 (permalink)
Зюня,0
Member
 
Регистрация: 29.05.2014
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Smile

Огромное спасибо!!!!Проблема в 3 задачи мне преподаватель сказал в том что когда ввожу строку к примеру (12345 568123 123) программа за место того чтобы вывести что слово (123) встречается только 1 раз выводит что оно встречается 3 раза тоесть получается как то надо что то добавить а я не понимаю)))И еще хотела спросить если я добавлю в ваши программы процидуры ввода и вывода я ничего не сломаю и не испорчу?
Зарание спасибо!
Зюня,0 вне форума   Ответить с цитированием
Старый 30.05.2014, 10:05   #7 (permalink)
Зюня,0
Member
 
Регистрация: 29.05.2014
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Smile

Еще хотела спросить, а вы можите подсказать по работе в FASM Assembler?
Зюня,0 вне форума   Ответить с цитированием
Старый 30.05.2014, 12:03   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Зюня,0 Посмотреть сообщение
И еще хотела спросить если я добавлю в ваши программы процидуры ввода и вывода я ничего не сломаю и не испорчу?
Если "процИдуры" - то точно сломаете. А вот если "процЕдуры" - то это смотря, как добавите. Если грамотно, то не сломаете и не испортите.
Vladimir_S вне форума   Ответить с цитированием
Старый 30.05.2014, 14:43   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Зюня,0 Посмотреть сообщение
Проблема в 3 задачи мне преподаватель сказал в том что когда ввожу строку к примеру (12345 568123 123) программа за место того чтобы вывести что слово (123) встречается только 1 раз выводит что оно встречается 3 раза тоесть получается как то надо что то добавить а я не понимаю)))
Ну что же, попробуйте так:
Код:
var
 a,b:string;
 k,i:integer;
 S:Set of Char;
begin
 S:=['A'..'Z']+['a'..'z']+['А'..'Я']+['а'..'я']+['0'..'9'];
 write('text: ');
 readln(a);
 write('slovo: ');
 readln(b);
 k:=0;
 while pos(b,a)>0 do
  begin
   if ((pos(b,a)=1) and not (a[pos(b,a)+Length(b)+1] in S)) or
      (not (a[pos(b,a)-1] in S) and not (a[pos(b,a)+Length(b)] in S)) or
      (not (a[pos(b,a)-1] in S) and (pos(b,a)+Length(b)-1=Length(a))) then k:=k+1;
   delete(a, pos(b,a), length(b));
  end;
 writeln(k);
 readln;
end.
Vladimir_S вне форума   Ответить с цитированием
Старый 30.05.2014, 19:33   #10 (permalink)
Зюня,0
Member
 
Регистрация: 29.05.2014
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Граматейка что поделать!)))Спасибо!!!!)))
Зюня,0 вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

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

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




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

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