Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 30.03.2012, 15:26   #1 (permalink)
Гульназ.М.
Member
 
Регистрация: 01.02.2012
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите, пожалуйста, разобраться в этих двух задачах

1.Дано слово. Поменять местами первую из букв "а" и последнюю из букв "о". Учесть возможность того, что таких букв в слове может не быть.
чего здесь не хватает?
procedure exchange(var s: string);
var i, j: integer;
begin
for i:=1 to length(s) do
if s[i]='a' then
for j:=length(s) downto 1 do
if s[j]='o' then
begin
s[i]:='o';
s[j]:='a';
exit;
end;
end.


2.Даны два натуральных числа. Выяснить в каком из них сумма цифр больше(определить функцию для расчета суммы цифр натурального числа)
Гульназ.М. вне форума   Ответить с цитированием

Старый 30.03.2012, 15:26
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Тут вы можете ознакомиться с похожими темами

Плата на двух 7265. Помогите разобраться
Помогите, пожалуйста, с решением двух задач в Pascal
Помогите разобраться
Помогите разобраться
Помогите, пожалуйста, разобраться в схеме
Помогите разобраться с ошибками, пожалуйста

Старый 30.03.2012, 16:17   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Гульназ.М. Посмотреть сообщение
чего здесь не хватает?
Да всего хватает. Вот только в конце процедуры, в отличие от программы, ставится не точка, а точка с запятой. И еще - я бы на свой вкус несколько более строго задал параметры процедуры, поставив входную (без "var") и выходную (с "var") строки. Но работает и так, я проверил.
Цитата:
Сообщение от Гульназ.М. Посмотреть сообщение
определить функцию для расчета суммы цифр натурального числа
Это можно сделать несколькими способами:
1. С преобразованием числа в строку:
Код:
Function Sum_Of_Fig(N:LongInt):Byte;
var
 SOF,i,Fig:Byte;
 S:String;
 Code:Integer;
begin
 STR(N,S);
 SOF:=0;
 For i:=1 to Length(S) do
  begin
   VAL(S[i],Fig,Code);
   Inc(SOF,Fig);
  end;
 Sum_Of_Fig:=SOF;
end;
2. С определением количества цифр через десятичный логарифм и дальше с циклом for-to-do:
Код:
Function Sum_Of_Fig(N:LongInt):Byte;
var
 NOF,i,SOF:Byte;
begin
 SOF:=0;
 If N>0 then
  begin
   NOF:=Trunc(Ln(N)/Ln(10))+1;
   For i:=1 to NOF do
    begin
     Inc(SOF,(N mod 10));
     N:=N div 10;
    end;
  end;
 Sum_Of_Fig:=SOF;
end;
3. Без предварительного определения количества цифр с циклом Repeat-Until:
Код:
Function Sum_Of_Fig(N:LongInt):Byte;
var
 SOF:Byte;
begin
 SOF:=0;
 If N>0 then
  Repeat
   Inc(SOF,(N mod 10));
   N:=N div 10;
  Until N=0;
 Sum_Of_Fig:=SOF;
end;
Можно и еще как-нибудь.

Да, если у Вас этот, не при дамах будь сказано, Pascal ABC, то Longint замените на Integer.
Vladimir_S вне форума   Ответить с цитированием
Старый 30.03.2012, 17:41   #3 (permalink)
Гульназ.М.
Member
 
Регистрация: 01.02.2012
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо большое Владимир, я все правильно вводила вот ту первую задачу, но не работало перед end какая-то ошибка выходит, и в этих тоже самое..почему-то меня смущает то что в конце программы точка с запятой стоит, не может ли там как нибудь по-другому быть,дальше продолжение ?
Гульназ.М. вне форума   Ответить с цитированием
Старый 30.03.2012, 17:43   #4 (permalink)
Гульназ.М.
Member
 
Регистрация: 01.02.2012
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

я там ввела в последней, допустим программе, которую вы написали:
begin
Readln;
end.
там вышло, но пустое черное поле без ничего
Гульназ.М. вне форума   Ответить с цитированием
Старый 30.03.2012, 17:56   #5 (permalink)
Гульназ.М.
Member
 
Регистрация: 01.02.2012
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

1. С преобразованием числа в строку-вот это мне подходит, я его ввела не идет,ошибка: Error 10.
Гульназ.М. вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 30.03.2012, 17:56   #6 (permalink)
Гульназ.М.
Member
 
Регистрация: 01.02.2012
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

1. С преобразованием числа в строку-вот это мне подходит, я его ввела не идет,ошибка: Error 10.....ввела все правильно
Гульназ.М. вне форума   Ответить с цитированием
Старый 30.03.2012, 20:31   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Уважаемая Гульназ, да поймите же - то, что выложено, это вовсе никакие не программы, а процедуры и функции! То есть всего лишь составные части программ. Сами по себе они работать не будут - нужно написать программы. Например, для вычисления суммы цифр с преобразованием в строку - так:
Код:
Var
 Q:Longint;

Function Sum_Of_Fig(N:LongInt):Byte;
var
 SOF,i,Fig:Byte;
 S:String;
 Code:Integer;
begin
 STR(N,S);
 SOF:=0;
 For i:=1 to Length(S) do
  begin
   VAL(S[i],Fig,Code);
   Inc(SOF,Fig);
  end;
 Sum_Of_Fig:=SOF;
end;

Begin
 Write('Q= ');
 Readln(Q);
 Writeln('Sum= ',Sum_Of_Fig(Q));
 Readln
End.
Ну и т.п.

И еще. Хочу дать Вам один дружеский (поверьте!) совет. Если Вы будете продолжать метаться между школьными задачками по Паскалю и HTML-формами, Ява-скриптами и прочим, и всюду будете пытаться урвать по кусочку - уверяю Вас, толку с этого не будет. То есть абсолютно ни малейшего. Так программирование не осваивают. Просто впустую потратите время, силы и нервы. Тут может быть только системный подход. Извините.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


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

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




Часовой пояс GMT +4, время: 17:29.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.