Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2013, 21:37   #1
julian97
 
Регистрация: 01.12.2013
Сообщений: 9
По умолчанию перевод в паскаль

есть код задачки на С++, помогите перевести в Паскаль
Код:
#include <iostream>
#include <algorithm>
using namespace std;

int
f(int a)
{
    int s = 0;
    while (a) {
        int b = a % 10;
        s += b * b;
        a /= 10;
    }
    return s;
}

int
main()
{
    int n;
    while (cin >> n) {
        vector<int> a;
        while ((n = f(n)) != 1 && find(a.begin(), a.end(), n) == a.end()) a.push_back(n);
        if (n == 1)
            cout << "HAPPY" << endl;
        else
            cout << "SAD" << endl;
    }
}

Последний раз редактировалось Stilet; 01.12.2013 в 22:32.
julian97 вне форума Ответить с цитированием
Старый 01.12.2013, 22:15   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Вот, функция.
Код:
function f(a:Integer):Integer;
var b:Integer;
begin
 f:=0;
 while a>0 do
  begin
   b:=a mod 10;
   f:=f+b*b;
   a:=a div 10;
  end;
end;
А саму main я не понял.
type_Oleg вне форума Ответить с цитированием
Старый 01.12.2013, 22:27   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

type_Oleg, осторожно, f в правой части уравнения.
julian97, это был всего-лишь пример того, как просто эта задача решается средствами C++. Наводки для перевода: нужен массив, в котором будут храниться встреченные числа; нужен счетчик, показывающий количество сохраненных чисел. Для упрощения можно взять массив элементов на 1000 (хотя дать гарантии, что размера хватит, нельзя) или разбираться в работе динамического выделения памяти.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 01.12.2013 в 22:29.
BDA вне форума Ответить с цитированием
Старый 01.12.2013, 22:33   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Да, я обычно Result использую. Но то не везде можно.
f:=f+... в Geany прокатило. Хотя, я всех тонкостей не знаю.
type_Oleg вне форума Ответить с цитированием
Старый 01.12.2013, 23:39   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

напоминаю, что эта задача изначально решалась в теме
задача с цыклом

откуда TC и взяла код на плюсах, неосторожно написанный ей в качестве примера BDA.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод с С++ в Паскаль Fmk Паскаль, Turbo Pascal, PascalABC.NET 1 18.05.2012 10:18
Перевод из C в паскаль KAIIUK Помощь студентам 2 12.12.2011 23:40
Перевод из Бэйсика в Паскаль Heming Помощь студентам 13 03.12.2011 17:29
Перевод программы с Паскаль на С++ Sentteriys Общие вопросы C/C++ 1 16.05.2011 22:40
Паскаль перевод чисел Darf Помощь студентам 9 27.05.2009 17:46