Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.11.2015, 01:04
EnumaElish EnumaElish вне форума
Прохожий
 
Регистрация: 30.11.2015
Сообщения: 6
Версия Delphi: pascal
Репутация: 10
По умолчанию Самое простое vol.1

Только начал изучать delphi с паскаля, буквально несколько дней
уже прошел циклы немного процедур итд...
никак не могу понять как решить задачки простые с книги 'песни о паскале'
-------------------------------------------
a)Почтальон разносит газеты по улице, состоящей из N домов. Четные и
нечетные номера расположены по разные стороны улицы. В здравом уме
почтальон не рискует лишний раз переходить её. Ваша программа должна
напечатать последовательность номеров, по которым будут разнесена почта, когда
почтальон начинает работу:
· с первого дома;
· со второго дома;
· с N-го (то есть последнего) дома.
--------------------------------------------
я так понимаю тут с помощью счетчика.. уже много всяких задачек решил.. но тут не пойму ((
--------------------------------------------
b) Создайте процедуру, печатающую все числа, кроме единицы, на которые
без остатка делится число N, где N — параметр процедуры. Напишите программу
для проверки этой процедуры.

Последний раз редактировалось EnumaElish, 30.11.2015 в 01:14.
Ответить с цитированием
  #2  
Старый 30.11.2015, 06:03
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

а) Ну, если нет ограничения на саму почту (т.е. почта есть для всех домов), то, видимо, разговор идет о циклах с шагом 2. Т.е. сначала проходимся по одной стороне улицы, потом по второй. Третий подвопрос - обратный цикл.

б) Ну тут просто. Идем циклом от 2 до SQRT(N)+1 и смотрим отсаток от деления. Если он 0, то печатаем число.
Ответить с цитированием
  #3  
Старый 30.11.2015, 21:58
EnumaElish EnumaElish вне форума
Прохожий
 
Регистрация: 30.11.2015
Сообщения: 6
Версия Delphi: pascal
Репутация: 10
По умолчанию

Спасибо.
По почтальону получилось но не через for to do
Код:
var a,c:integer;
begin
c:=1; //если начинаем с 1 дома
readln(a); //вводим количество домов 
 repeat
  c:=c+2;
  writeln(c);
  until (c=a) or (c=a+1) or (c=a-1);
 if c=a then
   begin
    c:=a-1;
    writeln(c);
  end;
repeat
c:=c-2;
writeln(c);
until (c=1) or (c=0);
end

Ответить с цитированием
  #4  
Старый 01.12.2015, 01:05
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А никто и не говорил, что for решает любые задачи. Персонально, я не очень люблю цикл repeat-until, предпочитаю while-do, он более читабельный.
Ответить с цитированием
  #5  
Старый 04.12.2015, 01:56
EnumaElish EnumaElish вне форума
Прохожий
 
Регистрация: 30.11.2015
Сообщения: 6
Версия Delphi: pascal
Репутация: 10
По умолчанию

Спасибо там все решил все было просто...
Вот новая делема на тему применения функций..
-===================-
Для введенной пользователем строки напечатать позиции всех входящих в
неё символов (кроме пробелов) в алфавитном порядке. Для символов, которые
встречаются несколько раз, напечатать их позиции в одной строке. Например, для
слова «PASCAL»:
-===================-
понятно что цифры нужно раскидыть по цифре ASCII ... как максимальное и минимальное найти в цикле все эт понятно.. но как их в итоге по порядку раскидать...
делаю так
Код:
function swap(var a:string):string;
var i:integer; x:char;
begin
for i:=0 to length(a) do
if a[i]<a[i+1] then
if i+1>length(a) then break 
else
begin
x:=a[i]; a[i]:=a[i+1]; a[i+1]:=x; //свапаем местами
end;
end;
но эта функция пробегается по строке всего 1 раз
вводим abbassa получаем bbassa
как зациклить чтобы пока не станет верным условие
Код:
a[i]>a[i+1]

p.s.поясните в каких случаях нужно ставить ссылку на переменную в функцию или процедуру типа
Код:
function swap(var a:string):string;
а когда не нужно.. перечитал много источников ни чего не пойму...((
p.s.s. и как из паскаля копировать текст куда нибудь?) постоянно приходится руками на форум набирать )

Последний раз редактировалось EnumaElish, 04.12.2015 в 03:08.
Ответить с цитированием
  #6  
Старый 04.12.2015, 20:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

сортировка делается двойным циклом.
Если есть возможность, то можно использоваться TStringList добавив не только значение, но и объект, в которм хранить список позиций.
На самом деле задача решается в 3 приема.
1. Сначала в какой-нить список пишем все буквы и их позиции.
2. Сортируем полученный список по буквам.
3. Делаем вывод результата из списка.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:21.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025