Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2009, 16:29   #1
Tevet
 
Регистрация: 17.01.2009
Сообщений: 7
Восклицание Срочно нужна помощь: три относительно простые программки

Приветствую!
Товарищи, помогите, кто располагает временем и добрым сердцем ))) нужно срочно, в понедельник-вторник, сдать три программы, но сейчас плотно завяз в других предметах и совершенно нет времени, разбираться и экспериментировать-разве что в ночь на воскресенье получится засесть, а принести их надо-просто край =\
Буду благодарен за любую помощь!

1. Дана матрица размерностью N*M. Запомнить координаты элементов матрицы, которые являются минимальными в своей строке и максимальными в своем столбце.

В решение задачи должны(это текст в задаче такой, то что мсне никто ничего тут не должен ясно как белый день ) входить следующие пункты:
1. Характеристика основных особенностей языка, позволяющих эффективно решать данный тип задач, с разбором операторов языка.
2. Запись алгоритма в виде блок-схемы, структурной диаграммы или псевдокода.
3. Запись алгоритма на языке Паскаль.

---------------------------------------------------------------
2. Составить главную программу и процедуру. В процедуре составить вектор номеров элементов исходного вектора А(М), которые являются совершенными числами. Совершенное число - это число, равное сумме своих делителей, отличных от него самого.

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

---------------------------------------------------------------
3. Вводится строка. Найти слово - палиндром, имеющее самую большую длину. Палиндром - текст, читающийся одинаково слева направо и наоборот.

В задаче вводится строка текста. Требуется выполнить некоторую обработку строки. Группу символов, расположенную между двумя разделителями, назовем словом. Разделители для всех вариантов одинаковые: запятая, точка, пробел, восклицательный знак, двоеточие, вопросительный знак, апостроф, кавычка, точка с запятой, звездочка. Для проверки символов на разделители желательно использовать операции над множествами.

Заранее огромное спасибо откликнувшимся! =)

Последний раз редактировалось Tevet; 17.01.2009 в 18:24.
Tevet вне форума Ответить с цитированием
Старый 17.01.2009, 21:35   #2
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

ТРЕТЬЯ ЗАДАЧА. возможно не точно но суть в этом. (писал с мобильного телефона так что если че не так то уж извините)
Код:
var s,a,b,pol:string;
i,j:integer;
begin
i:=-1;
readln(s);
while(i<length(s))do
begin while (copy(s,i,1<>' ')) do begin
i:=i+1;
a:=a+copy(s,i,1); end;
for j:=0 to length(a)-1 do b:=b+copy(length(a)-1-j);
if(a=b) then if (length(a)>length(pol) then pol:=a;
a:='';
b:='';
i:=i+1;
end;
writeln(pol);
end.
Писано по д'Эльфийски

Последний раз редактировалось Лубышев; 18.01.2009 в 10:02.
Лубышев вне форума Ответить с цитированием
Старый 18.01.2009, 11:14   #3
Tevet
 
Регистрация: 17.01.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Лубышев Посмотреть сообщение
ТРЕТЬЯ ЗАДАЧА. возможно не точно но суть в этом. (писал с мобильного телефона так что если че не так то уж извините)
Код:
var s,a,b,pol:string;
i,j:integer;
begin
i:=-1;
readln(s);
while(i<length(s))do
begin while (copy(s,i,1<>' ')) do begin
i:=i+1;
a:=a+copy(s,i,1); end;
for j:=0 to length(a)-1 do b:=b+copy(length(a)-1-j);
if(a=b) then if (length(a)>length(pol) then pol:=a;
a:='';
b:='';
i:=i+1;
end;
writeln(pol);
end.
спасибо огромное!
Tevet вне форума Ответить с цитированием
Старый 18.01.2009, 17:31   #4
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию 2) Вероятно так

uses crt;
type
ar=array[1..100] of integer;
var
mas,p:ar;
n,w,q:integer;
procedure read_array(var a:ar; k:integer);
var
i:integer;
begin
for i:=1 to n do
readln(a[i]);
end;
procedure pro(var a:ar; k:integer; var out:ar; var len:integer);
var
i,j:integer;
function prost(x:integer):boolean;
var
f:boolean;
m:integer;
begin
f:=true;
for m:=2 to (x div 2)+1 do
begin
if x mod m=0 then f:=false;
end;
prost:=f;
end;
begin
j:=0;
for i:=1 to k do
begin
if prost(a[i]) then begin j:=j+1; out[j]:=i; end;
end;
len:=j;
end;
begin
clrscr;
write(' Kolichestvo elementov -> ');
readln(n);
writeln('vvodite massiv ');
writeln;
read_array(mas,n);
pro(mas,n,p,w);
writeln;
writeln;
for q:=1 to w do
write(p[q],' ');
readln;
end.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Старый 18.01.2009, 18:19   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию Первая:

1. Характеристику и прочее, думаю, сами напишете )
2. Блок-схему построит fceditor (был где-то здесь, на форуме)
3. Код. Заполняю случайными числами. Если нужен ручной ввод, нужно удалить то, что помечено "generator" и раскомментить код с пометкой "ruchnoj vvod".

Код:
uses crt;
const N=4; M=4;
var
matr : array[1..N,1..M] of integer;
min : array[1..N] of integer;
b : array[1..N,1..2] of integer; { если N>=M, иначе b : array[1..M,1..2] }
i,j,k,mn : integer;
begin
clrscr;
{ --- generator --}
randomize;
for i:=1 to n do
 begin
 for j:=1 to m do
   begin
   matr[i,j] := random(10);
   write(matr[i,j]:4);
   end;
  writeln;
 end;
writeln('--------');

{ -- ruchnoj vvod - --}
{
 for i:=1 to n do
  for j:=1 to m do
   begin
   write('matr[',i,',',j,']= ');
   readln(matr[i,j]);
   end;
}
{----------}

for i:=1 to n do
  begin
  mn := 1;
  for j:=1 to m do
   if matr[i,j] < matr[i,mn] then mn := j;
  min[i] := matr[i,mn];
  end;

k := 0;
for j:=1 to m do
  begin
  mn := 1;
  for i:=1 to n do
   if matr[i,j]>matr[mn,j] then mn := i;
  if matr[mn,j] = min[mn] then
     begin
     inc(k);
     b[k,1] := mn;
     b[k,2] := j;
     end;
  end;
for i:=1 to k do
  begin
  writeln('matr[',b[i,1],',',b[i,2],']= ',matr[b[i,1],b[i,2]]);
  end;
readln;
end.
Пример того, что выводит:
Код:
   4   3   3   0
   5   5   3   0
   6   3   4   3
   4   1   4   2
--------
matr[3,4]= 3
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.01.2009, 23:16   #6
Tevet
 
Регистрация: 17.01.2009
Сообщений: 7
По умолчанию

я на вас молиться буду! вы спасли мою задницу, огромное спасибо!!
Tevet вне форума Ответить с цитированием
Старый 19.01.2009, 15:18   #7
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию

Сори, я ошибся в задаче ((( Не внимательно прочитал, ета программа вместо совершенных чисел заносит простые.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Старый 19.01.2009, 19:15   #8
Tevet
 
Регистрация: 17.01.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Tkirill Посмотреть сообщение
Сори, я ошибся в задаче ((( Не внимательно прочитал, ета программа вместо совершенных чисел заносит простые.
мне тут подкинули такой еще вариант, но компилятор отказывается кушать последние четыре строчки, в силу скудности знаний, устранить причину не удалось:

program Sov_cis;
const N=8;
var
i, sum: integer;
matrix: array [1..N] of Integer;
m_res: array [1..N] of Integer;
m_res_cnt: Integer;
m,j,a: Integer;

procedure opr_sov_cislo;
begin
m_res_cnt:=0;
for i:=1 to N do begin
a:=Abs(matrix[i]);
m:=a div 2;
sum:=1;
for j:=2 to m do;
begin
if(a div j)*j= a then
sum:=sum+j;
end;
if sum=a then begin
Inc(m_res_cnt);
m_res[m_res_cnt]:=i;
end;
end;

begin
for i:=1 to N do
begin
Write('Vvedite ',i,'-iy element massiva');
Read(matrix[i]);
end;
opr_sov_cislo;
WriteLn('Ishodniy massiv');
for i:=1 to N do
Write (matrix[i]:6);
WriteLn('');
if m_res_cnt=0 then
WriteLn('Sovershennih chisel net.')
else begin
for i:=1 to m_res_cnt do
WriteLn(m_res[i],'iy element massiva:', matrix[m_res[i]],' sovershennoe chislo');

WriteLn('Press Any Key');
repeat
until KeyPressed;
end.
Tevet вне форума Ответить с цитированием
Старый 19.01.2009, 19:37   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

В процедуре нашел пару ошибок (недосчитался одного end'а и нашел лишнюю точку с запятой)..
В общем, исправлено:

Код:
program Sov_cis;
uses crt;
const N=8;
var
i, sum: integer;
matrix: array [1..N] of Integer;
m_res: array [1..N] of Integer;
m_res_cnt: Integer;
m,j,a: Integer;

procedure opr_sov_cislo;
begin
m_res_cnt:=0;
for i:=1 to N do
  begin
  a:=Abs(matrix[i]);
  m:=a div 2;
  sum:=1;
  for j:=2 to m do
   begin
   if a mod j = 0 then
     sum:=sum+j;
   end;
  if sum=a then
   begin
   Inc(m_res_cnt);
   m_res[m_res_cnt]:=i;
   end;
 end;
end;

begin
for i:=1 to N do
  begin
  Write('Vvedite ',i,'-iy element massiva ');
  Read(matrix[i]);
  end;
opr_sov_cislo;
WriteLn('Ishodniy massiv');
for i:=1 to N do
  Write (matrix[i]:6);
WriteLn('');
if m_res_cnt=0 then
  WriteLn('Sovershennih chisel net.')
else
 for i:=1 to m_res_cnt do
  WriteLn(m_res[i],'iy element massiva: ', matrix[m_res[i]],' sovershennoe chislo');

WriteLn('Press Any Key');
repeat
until KeyPressed;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 19.01.2009, 20:27   #10
Tevet
 
Регистрация: 17.01.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
В процедуре нашел пару ошибок (недосчитался одного end'а и нашел лишнюю точку с запятой)..
В общем, исправлено
спасибо ) давно я(а вернее никогда) не видел форума, где бы с таким энтузиазмом помогали )) действительно спасибо!

вопрос на засыпку, делаю блок-схему через fceditor импортируя в него программу, всю блок-схему выдает с перечеркнутыми блоками, причем блок "начало" зачеркунт аж крест на крест; в чем загвоздка?...

Последний раз редактировалось Tevet; 19.01.2009 в 21:01.
Tevet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срочно нужна помощь Cheshire-Cat Помощь студентам 1 10.06.2008 17:26
Срочно нужна помощь!!! KAMENYKA Помощь студентам 5 11.12.2007 13:56
СРОЧНО! Нужна помощь RUsoft Общие вопросы Delphi 2 26.03.2007 16:54