Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
  Версия для печати (полностью) Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Решите пожалуйста задачку на Турбо Паскале
для меня это сложно

1). Для произвольной матрицы А(N,M) сформировать одномерный массив В, каждый элемент которого с номером К равен произведению суммы элементов k-й строки и произведению элементов k-го столбца. Если каждый элемент получится нулевым, то вывести на экран сумму по строке и произведение по столбцу.

2). Используя функции для работы со строками написать программы:

2.1Словом будем называть группу символов, отделённую от других символов пробелом или запятой. Подсчитать число символов в каждом слове, число слов, и вывести результаты на экран.

2.2 Для произвольного числа в сумму цифр левой и правой половинок числа. Если число цифр в числе нечётное, то среднюю цифру не считать. Если суммы равны, то вывести на экран рекомендацию "съесть" этот билетик.

на вас последняя надежда.
У меня скоро зачёт по ним в институте



Партнер
 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Цитата:
2.1Словом будем называть группу символов, отделённую от других символов пробелом или запятой. Подсчитать число символов в каждом слове, число слов, и вывести результаты на экран.


На счет колличества слов в строке вот тебе:

Код:
function Seps(As_Arg: Char): Boolean; 
begin 
  Seps := As_Arg in 
    [#0..#$1F, ' ', '.', ',', '?', ':', ';', '(', ')', '/', '\']; 
end; 

function WordCount(CText: string): Longint; 
var 
  Ix: Word; 
  Work_Count: Longint; 
begin 
  Work_Count := 0; 
  Ix         := 1; 
  while Ix <= Length(CText) do 
  begin 
    while (Ix <= Length(CText)) and (Seps(CText[Ix])) do 
      Inc(Ix); 
    if Ix <= Length(CText) then 
    begin 
      Inc(Work_Count); 

      while (Ix <= Length(CText)) and (not Seps(CText[Ix])) do 
        Inc(Ix); 
    end; 
  end; 
  Word_Count := Work_Count; 
end;


или вот ещё

Код:
function GetToken(aString, SepChar: string; TokenNum: Byte): string;
{
параметры: aString : полная строка

SepChar : единственный символ, служащий
разделителем между словами (подстроками)
TokenNum: номер требуемого слова (подстроки))
result    : искомое слово или пустая строка, если количество слов

меньше значения 'TokenNum'
}
var

  Token: string;
  StrLen: Byte;
  TNum: Byte;
  TEnd: Byte;

begin

  StrLen := Length(aString);
  TNum := 1;
  TEnd := StrLen;
  while ((TNum <= TokenNum) and (TEnd <> 0)) do
  begin
    TEnd := Pos(SepChar, aString);
    if TEnd <> 0 then
    begin
      Token := Copy(aString, 1, TEnd - 1);
      Delete(aString, 1, TEnd);
      Inc(TNum);
    end
    else
    begin
      Token := aString;
    end;
  end;
  if TNum >= TokenNum then
  begin
    GetToken1 := Token;
  end
  else
  begin
    GetToken1 := '';
  end;
end;

function NumToken(aString, SepChar: string): Byte;
{
parameters: aString : полная строка

SepChar : единственный символ, служащий
разделителем между словами (подстроками)
result    : количество найденных слов (подстрок)
}

var

  RChar: Char;
  StrLen: Byte;
  TNum: Byte;
  TEnd: Byte;

begin

  if SepChar = '#' then
  begin
    RChar := '*'
  end
  else
  begin
    RChar := '#'
  end;
  StrLen := Length(aString);
  TNum := 0;
  TEnd := StrLen;
  while TEnd <> 0 do
  begin
    Inc(TNum);
    TEnd := Pos(SepChar, aString);
    if TEnd <> 0 then
    begin
      aString[TEnd] := RChar;
    end;
  end;
  Result := TNum;
end;

// Или другое решение:

function CopyColumn(const s_string: string; c_fence: char;
  i_index: integer): string;
var
  i, i_left: integer;
begin

  result := EmptyStr;
  if i_index = 0 then
  begin
    exit;
  end;
  i_left := 0;
  for i := 1 to Length(s_string) do
  begin
    if s_string[i] = c_fence then
    begin
      Dec(i_index);
      if i_index = 0 then
      begin
        result := Copy(s_string, i_left + 1, i - i_left - 1);
        exit;
      end
      else
      begin
        i_left := i;
      end;
    end;
  end;
  Dec(i_index);
  if i_index = 0 then
  begin
    result := Copy(s_string, i_left + 1, Length(s_string));
  end;
end;


Думаю с этим сам разберёшся. А если нет - бери лопатник и иди к программистам.

Цитата:
2.2 Для произвольного числа в сумму цифр левой и правой половинок числа

Если честно, то я даже не понял о чём речь.

Цитата:
1). Для произвольной матрицы А(N,M) сформировать одномерный массив В, каждый элемент которого с номером К равен произведению суммы элементов k-й строки и произведению элементов k-го столбца. Если каждый элемент получится нулевым, то вывести на экран сумму по строке и произведение по столбцу.

Тут чистая математика с матрицами. Ничего сложного.

_________________
Лучшая зашита - это нападение.


 

Спасибо за решение

Добавлено спустя 58 секунд:
Ну может кто то и решит 1 задачу, кому не сложно, для меня даже такая задача сложная


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Лесной человек А свой диплом мне тогда отдаш?


 

До диплома мне ещё далеко, это задачи для обычного зачёта


 

Advanced member
Статус: Не в сети
Регистрация: 23.10.2003
Откуда: Иркутск/Майкоп
Во флейм.

_________________
Края каждого совершенно нового крышка процессора не на 100% гладкая. Это связано с тем, что следов мастерства не избежать. (c) Али.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan