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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 06.04.2008, 08:54   #1
Markovnik
Новичок
Джуниор
 
Регистрация: 06.04.2008
Сообщений: 1
По умолчанию Помогите написать программы на Delphi

Помогите пожалуйста решить 2 задачи на Delphi. Скоро экзамены а я не получил зачёт.
Вот условия:
1)Дано n различных натуральных чисел. Определить три наибольших числа среди них.
2)В заданной матрице V найти максимальное из чисел, встречающееся более одного раза. Исходную матрицу вывести в общепринятом виде. Повторяющиеся элементы матрицы вывести в виде строки. Результаты вывести в произвольной форме.
Заранее спасибо.
Markovnik вне форума
Старый 06.04.2008, 11:29   #2
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Ну вот решение поставленных задач
Код:
program Project2;

{$APPTYPE CONSOLE}
uses
  SysUtils;

Type
  TMas=array of double;
  TMatrix=array of TMas;
Procedure ReadMas(Mas:TMas);
var
  i:Cardinal;
begin
  For i:=0 to Length(Mas) do
    Read(Mas[i]);
end;

Procedure SortMas(Mas:TMas);
var
  i,j:Cardinal;
  n:Double;
begin
  For i:=1 to length(Mas)-1 do
  begin
    For j:=length(Mas)-1 downto i do
    begin
      if Mas[j-1]<Mas[j] then
      begin
        n:=Mas[j-1];
        Mas[j-1]:=Mas[j];
        Mas[j]:=n;
      end;
    end;
  end;
end;

Procedure Task1;
var
  i:Cardinal;
  Mas:TMas;
begin
  writeln('Count?');
  Readln(i);
  SetLength(Mas, i);
  ReadMas(Mas);
  SortMas(Mas);
  Writeln(floattoStr(Mas[0]),' ', floattoStr(Mas[1]), ' ', floattoStr(Mas[2]));

end;

Procedure ReadMatrix(Matrix:TMatrix);
var
  i,j:Cardinal;
begin
  For i:=0 to Length(Matrix)-1 do
  begin
    For j:=0 to Length(Matrix[i])-1 do
    begin
      Read(Matrix[i][j]);
    end;
  end;
end;

Function FindMax (Mas:TMas;var Finded:Boolean):Double;
var
  i:Cardinal;
begin
  Finded:=False;
  For i:=0 to Length(mas)-2 do
  begin
    If Mas[i]=Mas[i+1] then
    begin
      Finded:=True;
      Result:=mas[i];
      Exit;
    end;
  end;
end;

Procedure PrintMatrix(Matrix:TMatrix);
var
  i,j:Cardinal;
  SLine:String;
begin
  For i:=0 to Length(matrix)-1 do
  begin
    SLine:='';
    For j:=0 to Length(Matrix[i])-1 do
    begin
      SLine:=SLine+' '+FloatToStr(Matrix[i][j]);
    end;
    Writeln(Sline);
  end;
end;

Procedure PrintReiterativeElements(Mas:TMas);
var
  i, j:Cardinal;
  S:String;
  Naminal:Double;
begin
  For i:=0 to Length(Mas)-2 do
  begin
    Naminal:=Mas[i];
    s:=FloatToStr(Naminal);
    For j:=i+1 to length(Mas)-1 do
    begin
      if Mas[j]<>Naminal then  Break;
      s:=s+' '+FloatToStr(mas[j]);
    end;
    if Pos(' ', S)>0 then Writeln(s);
  end;
end;

Procedure Task2;
Var
  Matrix:TMatrix;
  Mas:TMas;
  Log:Boolean;
  Max:Double;
  CountX, CountY, i:Cardinal;
begin
  Writeln('Count X?');
  Readln(CountX);
  Writeln('Count Y?');  
  readln(CountY);
  SetLength(Matrix, CountY);
  for i:=0 to CountY-1 do
  begin
    Setlength(Matrix[i],CountX);
  end;
  ReadMatrix(Matrix);
  SetLength(mas, CountX*CountY);
  for i:=0 to CountX*CountY-1 do
  begin
    Mas[i]:=Matrix[i div CountX][i Mod CountX];
  end;
  SortMas(Mas);
  Max:=FindMax(Mas,Log);
  if Log then Writeln('Max:', FloatToStr(Max)) else Writeln('Max: not found');
  Writeln('Matrix');
  PrintMatrix(Matrix);
  Writeln('Reiterative Elements:');
  PrintReiterativeElements(Mas);
end;

var
  TaskNumber:Byte;
begin
  Writeln('Task Number?');
  Read(TaskNumber);
  Case TaskNumber of
    1:Task1;
    2:Task2;
  end;
  Writeln('Press Enter');
  Readln;
end.
Помог? Ну так нажми на весы!
SNUPY вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать программы в паскале пожалуйста neomaximus Помощь студентам 1 15.06.2008 07:43
Помогите написать программы на с++ =42na= Помощь студентам 4 27.11.2007 13:59
Помогите написать 3 программы на Delphi burunduk Помощь студентам 9 21.01.2007 14:02