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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2008, 19:58   #1
Qlimax
 
Регистрация: 28.10.2008
Сообщений: 8
Смех Пару задач на паскале

народ!! решите пожалуйста эти задачки.. а то знаний не хватает,а препод достал уже((

1) Найти в каждой строке матрицы максимальный и минимальный элемент и поместить их на место первого и последнего элемента строчки соответственно.Вывести на экран исходную и полученную матрицы в общепринятом виде. F(3,5) Fij>0

2)Задано предложение,состоящее из слов,разделенных одним или несколькими пробелами.Найти самое длинное слово в предложении

3)Даны действительные числа a,b,c,d,e - стороны пятиугольника. найти площадь пятиугольника. (определить процедуру вычисления площади треугольника по его сторонам)

заранее СПС)))
Qlimax вне форума Ответить с цитированием
Старый 28.10.2008, 21:50   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Условие третьей задачи некорректно. 5-и угольник не является жесткой фигурой и при одних и тех же длинах сторон может иметь разные площади. Чего-то пропустили.
puporev вне форума Ответить с цитированием
Старый 29.10.2008, 09:45   #3
Qlimax
 
Регистрация: 28.10.2008
Сообщений: 8
По умолчанию

хм...ну вроде такое условие в ней было..посмотрю сегодня точно скажу
Qlimax вне форума Ответить с цитированием
Старый 29.10.2008, 14:12   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Держи первые две задачи и попробуй врубиться, как они решаются. Больше не спрашивай, делай сам.
№1.
Код:
uses crt;
const n=3;
      m=5;
var F:array[1..n,1..m]of integer;
    i,j,max,jmax,min,jmin,x,y:integer;
begin
clrscr;
randomize;
writeln('Ishodnaja matrica:');
for i:=1 to n do
   begin
     for j:=1 to m do
        begin
          F[i,j]:=random(20)+1; {>0}
          write(F[i,j]:4);
        end;
     writeln;
   end;
for i:=1 to n do  {идем по строкам}
   begin
     max:=F[i,1];jmax:=1;min:=F[i,1];jmin:=1;
     for j:=1 to m do {в каждой строке вы}
       begin
        if F[i,j]>max then
           begin
             max:=F[i,j]; {находим максимальный}
             jmax:=j;  {его номер в строке}
           end;
        if F[i,j]<min then
           begin
             min:=F[i,j];{минимальный}
             jmin:=j;    {его номер в строке}
           end;
       end;
     if jmax>1 then  {если максимальный элемент не первый}
        begin
          for j:=jmax downto 2 do {сдвигаем строку от первого до этого элемента вправо}
          F[i,j]:=F[i,j-1];
          F[i,1]:=max;  {на певое место ставим макс}
          if jmin<m then {если минимальный не последний}
            begin
              for j:=jmin+1 to m-1 do {сдвигем от него+1(он раньше сдвинулся вправо) до конца на один влево}
              F[i,j]:=F[i,j+1];
              F[i,m]:=min; {последним ставим мин}
            end;
        end
      else if jmax=1 then  {если максимальный первый}
        begin
         for j:=jmin to m-1 do {то оперируем только с минимальным(он раньше не двигался)}
         F[i,j]:=F[i,j+1];
         F[i,m]:=min;
     end;
   end;
writeln('Rezultat:');
for i:=1 to n do
   begin
     for j:=1 to m do
     write(F[i,j]:4);
     writeln;
   end;
readln
end.
№2.
Код:
uses crt;
var s,s1,s2:string;
    max,len,i:integer;
begin
  clrscr;
  writeLn('predlozenie: ');
  readLn(s);
  writeln;
  if s[length(s)]='.' then s[length(s)]:=' '{если в конце точка, заменяем на пробел}
  else  s:=s+' ';  {если нет, добавляем пробел}
  for i:=length(s)downto 1 do
  while pos('  ',s)>0  do  delete(s,pos('  ',s),1);{удаляем лишние пробелы('  ')-это 2 пробела}
  s1:=''; max:=0;
  while pos(' ',s) > 0 do  {пока есть пробелы}
   begin
    len:=pos(' ',s)-1; {определяем длину очередного слова}
    s1:=copy(s,1,len); {запоминаем его}
    if len > max then
      begin
        s2:=s1;  {если оно длиннее предыдущих, то запоминаем его}
        max:=len;
      end;
    delete(s,1,pos(' ',s)); {удаляем просмотренное слово}
   end;
  write('Max slovo: ',s2);
  readLn;
end.
puporev вне форума Ответить с цитированием
Старый 29.10.2008, 21:15   #5
Qlimax
 
Регистрация: 28.10.2008
Сообщений: 8
По умолчанию

спасибо БОЛЬШОЕ!!!
я про третю спросил он сам не знает формулы для произвольного..я думал думал получилось на по страницы но это слишком много...надо будет узнать у когонить..потом тогда отпишусь
Qlimax вне форума Ответить с цитированием
Старый 29.10.2008, 23:18   #6
forz
 
Регистрация: 29.10.2008
Сообщений: 6
По умолчанию

а как сделать вторую задачу через массив к примеру из 80 элементов ..причем чтоб выдавалось длина каждого слова и затем максимальное из них) кста в коде 2 программы не предусмторена ситуация если встречаются несколько слов одинаковой длинны ..по умлчанию сдесь выдаецо первое из них а не все)))
forz вне форума Ответить с цитированием
Старый 30.10.2008, 08:51   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
а как сделать вторую задачу через массив к примеру из 80 элементов
Легко, только это не эффективно.
Цитата:
кста в коде 2 программы не предусмторена ситуация если встречаются несколько слов одинаковой длинны ..по умлчанию сдесь выдаецо первое из них а не все)))
А где это написано в условии? Покажи. Я не телепат.
puporev вне форума Ответить с цитированием
Старый 30.10.2008, 12:09   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

А, это другой вопрос. Чего Вы лезете в чужую тему? Свою нужно создавать.
Код:
uses crt;
var s:string;
    s1:array[1..80]of string;
    max,i,k:integer;
begin
  clrscr;
  writeLn('predlozenie: ');
  readLn(s);
  writeln;
  if s[length(s)]='.' then delete(s,length(s),1);//если в конце точка удаляем
  for i:=length(s)downto 1 do
    while pos('  ',s)>0  do  delete(s,pos('  ',s),1);//удаляем лишние пробелы
  if s[length(s)]=' ' then delete(s,length(s),1);//если в конце пробел удаляем
  k:=1;
  for i:=1 to length(s) do
    if s[i]=' ' then k:=k+1
    else s1[k]:=s1[k]+s[i];//делаем массив
  for i:=1 to k do
    writeln(s1[i],'  dlina=',length(s1[i]));//выводим слова и их длину
  writeln;
  max:=0;
  for i:=1 to k do
    if length(s1[i])>max then max:=length(s1[i]);//ищем самое длинное
  writeln('Slova c maximalnoj dlinoj:');
  for i:=1 to k do
    if length(s1[i])=max then writeln(s1[i]);//выводим все самые длинные
  readLn
end.
puporev вне форума Ответить с цитированием
Старый 03.11.2008, 09:23   #9
Qlimax
 
Регистрация: 28.10.2008
Сообщений: 8
По умолчанию

показал преподу задачи он сказал:
1 решена не рациональным методом...и не правильно...ее надо решать методом пузырьков (ээ..вроде он так сказал)....
2 задача пишет ошибка на "else" он сказал что не правельно решена где то...
Qlimax вне форума Ответить с цитированием
Старый 03.11.2008, 09:27   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Если Ваш препод дуб, то я тут не причем. Он даже не понимает чем отличается обмен двух элементов и сортировка с помощью такого обмена, одним из методов которой является "пузырек".
В задании не нужно сортировать строки, а только на первое место поставить мин эл-т, на последнее - макс.
По второй задаче видимо ты внес свои коррективы и программа начала косячить. У меня работает отлично. Приведи код программы, как ты его преподу показывал.
Кстати о преподах. На одном из форумов такой препод, который год преподавал в школе, со своими решениями облажался несколько раз, больше его не видели.

Последний раз редактировалось puporev; 03.11.2008 в 09:39.
puporev вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить пару задач! СРОЧНО!!! andrew_brest Помощь студентам 3 13.04.2009 22:16
Помогите пожалуйстьа решить несколько задач в Паскале (МАССИВЫ) VisTBacK Помощь студентам 20 20.02.2009 08:32
Пару вопросов о DynamicSkinForm Relrin Компоненты Delphi 6 22.04.2008 04:03
Срочно пару вопросов fruTT Общие вопросы Delphi 8 30.10.2007 22:14