Страница 1 из 2

Нужна скорая помощь по решению задач на паскале

Добавлено: 04 июн 2005, 13:27
Лучик
1. Пусть даны три слова. Необходимо определить буквы, которые встречаются (для нахождения множества символов, образующих слово, используйте процедуру):
а) во всех словах;
б) только в 1-м и 2-м словах;
в)только в 1-м и 3-м словах;
г) только во 2-м и 3-м словах;
д) только в 1-м слове;
е) только во 2-м слове;
ж) только в 3-м слове.

2.Пусть даны два предложения, которые оканчиваются точкой и содержат одинаковое количество слов. Определите для первых слов каждого предложения множество одинаковых букв, а для последних - те буквы, которые встречаются только в одном из них. Для определения буквенного состава слова используйте процедуру.

3. Пусть дана прямоугольная матрица А(n x m), элементами которой являются вещественные числа. Определите для каждой строки, все ли её элементы являются симметричными. Составьте функцию, проверяющую симметричность числа.

4. Пусть дана прямоугольная матрица А(n x m), элементами которой являются целые числа.Определите для каждого элемента позиции элементов матрицы с такой же суммой цифр. :cry: [/b]

Добавлено: 14 июн 2005, 01:53
prog
Могу помочь решить эти задачи в кратчайшие сроки.
Свяжись со мной по ICQ 220655573
или отправь сообщение на ящик kolesnik_kka@mail.ru

Re: Нужна скорая помощь по решению задач на паскале

Добавлено: 07 июл 2007, 22:07
orlando
окажите помащь в написании проги на паскале..типа с графами
{является ли введенный обод графом}
плиз..

Re: Нужна скорая помощь по решению задач на паскале

Добавлено: 08 июл 2007, 09:56
Новенький
Лучик, вот 4:

Код: Выделить всё

(*Пусть дана прямоугольная матрица А(n x m), элементами которой являются целые 
числа.Определите для каждого элемента позиции элементов матрицы с такой же 
суммой цифр.*)
uses crt;
type matr=array[1..10,1..10]of integer;
procedure summa(a:integer; var s:integer); {сумма цифр элемента}
  begin
    s:=0; {обнуляем сумму}
    if a<10 {если в числе одна цифра}
    then s:=a {то присваиваем эту цифру сумме}
    else while a>9 do {иначе пока число болше 9}
           begin
             s:=a mod 10+s; {суммируем последнюю цифру и основную сумму}
             a:=a div 10; {отбрасываем последнюю цифру}
             if a<10 then s:=s+a; {если число стало меньше 9, то фиксируем это в сумме}
           end;
  end;

procedure poz(ma:matr; n,m:integer); {позиция элемента}
  var i,j,i_prom,j_prom,sum,sum_prom,chislo,nom,kol:integer;
  begin
    nom:=1; {nom - номер элемента по порядку: 1}
    for i:=1 to m do
      for j:=1 to n do
        begin
          writeln(nom,' элемент (',ma[i,j],'): ');
          chislo:=ma[i,j]; {присваиваем переменной значение текущего элемента матрицы}
          summa(chislo,sum); {находим сумму цифр элемента}
          for i_prom:=1 to m do
            for j_prom:=1 to n do
              begin
                chislo:=ma[i_prom,j_prom];
                summa(chislo,sum_prom);
                if (sum=sum_prom)and((i<>i_prom)and(j<>j_prom)) {суммы= и элемент не один и тот же}
                then begin
                       write('(',i_prom,' : ',j_prom,') '); {выводим координаты}
                       kol:=kol+1; {подсчитываем кол-во кординат}
                     end
                else write;
              end;
          if kol=0 then write('нет'); {нет элементов с такой же суммой цифр}
          kol:=0; {обнуляем кол-во координат}
          writeln;
          nom:=nom+1; {меняем номер элемента}
        end;
  end;

var m,n,i,j:integer;
    a:matr;
begin
  clrscr; {очистка экрана}
  randomize; {включение датчика случайных чисел}
  write('Размерность (n x m): ');
  readln(n,m); {размерность матрицы}
  {заполнение матрицы случайными числами и вывод на экран}
  for i:=1 to m do {счетчик столбцов}
    begin
      for j:=1 to n do {счетчик строк}
        begin
          a[i,j]:=random(21); {заполнение}
          write(a[i,j]:3); {вывод}
        end;
      writeln;
    end;

  poz(a,n,m);
  readln;
end.

Re: Нужна скорая помощь по решению задач на паскале

Добавлено: 09 июл 2007, 10:54
Хыиуду
Оптимизируем, господа!
summa лучше сделать не процедурой, а функцией, так оно все логичней получается

Код: Выделить всё

function summa(a:integer):integer;
var s:integer;
begin
  s:=0;
  while a>0 do
  begin
     inc(s,a mod 10);
     a:=a div 10;
  end;
  summa:=s;
end;
Теперь процедура, которая отыскивает для заданного элемента элементы с такой же суммой

Код: Выделить всё

procedure find_even_sum(ma:matr;x,y:integer);
var i,j,sum:integer
begin
  sum:=summa(ma[x,y]);
  for i:=1 to 10 do
  for j:=1 to 10 do
  begin
      if (i=x) and  (j=y) then continue;
      if summa(ma[i,j])=sum then writeln(i,':',j);
  end;
end;
А дальше в цикле пройтись по матрице и вывести элементы с той же суммой для каждого элемента

Re: Нужна скорая помощь по решению задач на паскале

Добавлено: 10 июл 2007, 08:34
Новенький
Хыиуду, а объясни пожалуйста вот это then continue, я просто недавно начал изучать программироввание, а еще inc(s,a mod 10);

Re: Нужна скорая помощь по решению задач на паскале

Добавлено: 10 июл 2007, 12:51
Хыиуду
continue - переход к следующему шагу цикла, полезно, если тело цикла в каких-то условиях не должно выполняться. Например, найти сумму всех нечетных чисел от 1 до 99
for i:=1 to 99 do
if i mod 2=0 then continue {если число четное - переходим к следующему шагу цикла}
else inc(sum,i);

inc(a,b) равносильно a:=a+b. inc(a) равносильно а:=a+1

Re: Нужна скорая помощь по решению задач на паскале

Добавлено: 10 июл 2007, 14:32
Новенький
а, понятно

Re: Нужна скорая помощь по решению задач на паскале

Добавлено: 25 дек 2009, 17:28
джонсмит
помогите решить: в введенном натуральном числе переставить 1-ую и последнюю цифру в записи. очень надо :confused:

Re: Нужна скорая помощь по решению задач на паскале

Добавлено: 26 дек 2009, 21:04
Sheka
255507394 за бутылку пива!