Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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



Ответ
 
Опции темы
Старый 12.07.2011, 23:22   #1
trafficj
Новичок
 
Регистрация: 06.07.2011
Сообщений: 2
Репутация: 10
Сообщение Текст консольной Delphi-программы

Доброго времени суток.
Хотел бы попросить у вас помочь мне в написании текста консольной делфи программы. Сам не очень всё это понимаю и прошу если можно объяснить что и как.

1. Дан двумерный массив. Найти сумму и количество положительных элементов, лежащих выше главной диагонали.

Вот что у меня вышло, так ли это, а если нет, то прошу написать что неправильно

Код:

sum:=0;
count:=0;
for i:=1 to n do
   for j:=1 to n do
      if (j>i) then 
      begin
        sum:=sum+arr[i,j];
        if (arr[i,j]>0) then Inc(count);
      end;

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

Вот что у меня вышло, так ли это, а если нет, то прошу написать что неправильно


Код:

procedure TForm1.Button1Click(Sender: TObject);
const
  //Множество разделителей слов.
  D = [' ', '.', ',', ':', ';', '!', '?', '-', #9, #10, #13];
var
  S : String;
  Ch : Char;
  Da : Set of Char;
  i, Len, CntA, CntA1, CntW : Integer;
begin
  //Ввод исходных данных.
 
  //Исходный текст.
  S := Memo1.Text;
  //Буква.
  if Edit1.Text <> '' then
    Ch := Edit1.Text[1]
  else begin
    ShowMessage('Буква не задана. Действие отменено.');
    Exit;
  end;
  //Составляем множество из заглавной и строчной версий буквы.
  Da := [ AnsiUpperCase(Ch)[1], AnsiLowerCase(Ch)[1] ];
  //Количество присутствий буквы в слове.
  CntA := StrToIntDef(Edit2.Text, -1);
  if CntA = -1 then begin
    ShowMessage('Неверно задано количество присутствий буквы в слове. Действие отменено.');
    Exit;
  end;
 
  //Решение задачи.
 
  Len := Length(S);
  CntA1 := 0;
  CntW := 0;
  for i := 1 to Len do begin
    //Пропускаем разделители.
    if S[i] in D then Continue;
    //Подсчитываем количество присутствий заданной буквы в очередном слове.
    if S[i] in Da then Inc(CntA1);
    //Отслеживаем конец слова.
    if (i = Len) or (S[i + 1] in D) then begin
      //Если количество присутствий заданной буквы совпадает с заданным,
      //то подсчитываем это слово.
      if CntA = CntA1 then Inc(CntW);
      //Сброс счётчика букв.
      CntA1 := 0;
    end;
  end;
 
  //Ответ.
  Memo2.Clear;
  Memo2.Lines.Add('Количество слов, в которых буква "' + Ch + '"');
  Memo2.Lines.Add('присутствует ' + IntToStr(CntA) + ' раз:');
  Memo2.Lines.Add(IntToStr(CntW));
end;

3. Задана система из одного слова и координат концов отрезка. Требуется сравнить количество букв в слове и длиной отрезка

Заранее огромное спасибо
trafficj вне форума   Ответить с цитированием
Старый 12.07.2011, 23:51   #2
demeros
Пользователь
 
Регистрация: 29.03.2010
Адрес: Львів
Сообщений: 35
Репутация: 37
По умолчанию

Код:

for i:=1 to n {главную диагональ не учитываем}
for j:=1 to n {при проходе по массиву в первом рядке будет n-1 столбцов, во втором n-2 и тд. , написав n-i мы будем правильно проходить мо элементам}
begin
if (i>j) and (arr[i,j]>0) then{нам нужны только положительные элементы}
begin
sum:=sum+arr[i,j];
Inc(count);
end;
end;

второе не осилил, голова не варит.

Последний раз редактировалось demeros; 13.07.2011 в 14:02. Причина: Было написано для боковой диагонали
demeros вне форума   Ответить с цитированием
Старый 13.07.2011, 00:09   #3
demeros
Пользователь
 
Регистрация: 29.03.2010
Адрес: Львів
Сообщений: 35
Репутация: 37
По умолчанию

Код:

var coords:array [0..3] of real = (0,0,1,4);
    str:string='ababagalamaga';
    ln,ln2:word;
begin
    ln:=Length(str);{количество букв в слове}
    ln2:=Trunc(sqrt(sqr(coords[2]-coords[0])+sqr(coords[3]-coords[1])));{длина вектора за формулой,Trunc так как для сравнения нам нужно целое число}
    Writeln('word lenght = ',ln);
    Writeln('line lenght = ',ln2);
    if (ln>ln2) then
    writeln('word longer then line')
    else
      writeln('line longer then word');
end.

3. както так, если правильно условие понял.
в массиве (x1,y1,x2,y2)

Последний раз редактировалось demeros; 13.07.2011 в 00:12.
demeros вне форума   Ответить с цитированием
Старый 13.07.2011, 03:02   #4
trafficj
Новичок
 
Регистрация: 06.07.2011
Сообщений: 2
Репутация: 10
По умолчанию

Огромное спасибо!
не знаете что делать с задачей три делать

3. Задана система из одного слова и координат концов отрезка. Требуется сравнить количество букв в слове и длиной отрезка
trafficj вне форума   Ответить с цитированием
Старый 13.07.2011, 09:30   #5
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 21,030
Репутация: 4779
По умолчанию

Цитата:
длина вектора за формулой,Trunc так как для сравнения нам нужно целое число}
зачем? Где это сказано, что нужно сравнить "целую часть" длины отрезка с длиной слова?!
я, конечно молчу вообще про логику и правомочность подобных сравнений..
Как в сценке в КВН про качков (команда "уральские пельмени").
- Ты прикинь, я ж от груди 180 жму. А это почти мой рост!!


так что можно просто
Код:

if Length(Slovo)> sqrt(sqr(x1-x2)+sqr(y2-y1)) then Writeln('Длина слова больше длины отрезка! ')
  else Writeln('Длина слова меньше или равна длины отрезка! ');

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 13.07.2011, 14:03   #6
demeros
Пользователь
 
Регистрация: 29.03.2010
Адрес: Львів
Сообщений: 35
Репутация: 37
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
зачем? Где это сказано, что нужно сравнить "целую часть" длины отрезка с длиной слова?!
я, конечно молчу вообще про логику и правомочность подобных сравнений..
Как в сценке в КВН про качков (команда "уральские пельмени").
- Ты прикинь, я ж от груди 180 жму. А это почти мой рост!!


так что можно просто
Код:

if Length(Slovo)> sqrt(sqr(x1-x2)+sqr(y2-y1)) then Writeln('Длина слова больше длины отрезка! ')
  else Writeln('Длина слова меньше или равна длины отрезка! ');

Спасибо за ваши добрые слова и обьективные замечания!
demeros вне форума   Ответить с цитированием
Ответ



Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести текст программы из DELPHI в PASCAL анна2709 Паскаль 2 03.04.2011 20:05
Захват консольной программы в свою Человек_Борща Общие вопросы Delphi 4 29.12.2010 19:58
Построить график функции в Delphi(консольной) Atoris Помощь студентам 2 21.10.2010 01:35
Две задачки на массивы в Delphi(консольной) Atoris Помощь студентам 3 10.10.2010 18:34
не читает результат работы консольной программы Consol Работа с сетью в Delphi 0 21.08.2009 12:21




19:23.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
таргетированный трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru