• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите, пожалуйста, разобраться в этих двух задачах

Гульназ.М.

Новые
Регистрация
1 Фев 2012
Сообщения
75
Реакции
0
Баллы
0
Помогите, пожалуйста, разобраться в этих двух задачах

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


2.Даны два натуральных числа. Выяснить в каком из них сумма цифр больше(определить функцию для расчета суммы цифр натурального числа)
 
чего здесь не хватает?
Да всего хватает. Вот только в конце процедуры, в отличие от программы, ставится не точка, а точка с запятой. И еще - я бы на свой вкус несколько более строго задал параметры процедуры, поставив входную (без "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.
 
спасибо большое Владимир, я все правильно вводила вот ту первую задачу, но не работало перед end какая-то ошибка выходит, и в этих тоже самое..почему-то меня смущает то что в конце программы точка с запятой стоит, не может ли там как нибудь по-другому быть,дальше продолжение ?
 
я там ввела в последней, допустим программе, которую вы написали:
begin
Readln;
end.
там вышло, но пустое черное поле без ничего
 
1. С преобразованием числа в строку-вот это мне подходит, я его ввела не идет,ошибка: Error 10.
 
1. С преобразованием числа в строку-вот это мне подходит, я его ввела не идет,ошибка: Error 10.....ввела все правильно
 
Уважаемая Гульназ, да поймите же - то, что выложено, это вовсе никакие не программы, а процедуры и функции! То есть всего лишь составные части программ. Сами по себе они работать не будут - нужно написать программы. Например, для вычисления суммы цифр с преобразованием в строку - так:
Код:
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-формами, Ява-скриптами и прочим, и всюду будете пытаться урвать по кусочку - уверяю Вас, толку с этого не будет. То есть абсолютно ни малейшего. Так программирование не осваивают. Просто впустую потратите время, силы и нервы. Тут может быть только системный подход. Извините.
 
Назад
Сверху