Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Pascal (http://www.tehnari.ru/f41/t96648/)

Зюня,0 29.05.2014 16:58

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.
Зарание огромное СПАСИБО!!!!!

Gruvi 29.05.2014 17:14

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.

Vladimir_S 29.05.2014 17:25

Хорошо, посмотрю - но позже. Вечером или завтра.
Что касается задачки 3, то отвечайте тем, кто "сказали", жестко. Пусть конкретно укажут, что им не нравится. Потому что программа написана абсолютно правильно, грамотно и даже остроумно. Ничего переделывать не нужно. Это я Вам авторитетно, как программист, заявляю.

Gruvi 29.05.2014 17:57

Присоединяюсь к Владимиру. Программа написана абсолютно верно.

Vladimir_S 29.05.2014 23:19

Цитата:

Сообщение от Зюня,0 (Сообщение 1036060)
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.


Зюня,0 30.05.2014 10:02

Огромное спасибо!!!!Проблема в 3 задачи мне преподаватель сказал в том что когда ввожу строку к примеру (12345 568123 123) программа за место того чтобы вывести что слово (123) встречается только 1 раз выводит что оно встречается 3 раза тоесть получается как то надо что то добавить а я не понимаю)))И еще хотела спросить если я добавлю в ваши программы процидуры ввода и вывода я ничего не сломаю и не испорчу?
Зарание спасибо!

Зюня,0 30.05.2014 10:05

Еще хотела спросить, а вы можите подсказать по работе в FASM Assembler?

Vladimir_S 30.05.2014 12:03

Цитата:

Сообщение от Зюня,0 (Сообщение 1036248)
И еще хотела спросить если я добавлю в ваши программы процидуры ввода и вывода я ничего не сломаю и не испорчу?

Если "процИдуры" - то точно сломаете. А вот если "процЕдуры" - то это смотря, как добавите. Если грамотно, то не сломаете и не испортите.

Vladimir_S 30.05.2014 14:43

Цитата:

Сообщение от Зюня,0 (Сообщение 1036248)
Проблема в 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.


Зюня,0 30.05.2014 19:33

Граматейка что поделать!)))Спасибо!!!!)))


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.