Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65

Перевод из Паскаля в с++

14.01.2011, 17:48. Показов 4403. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача:
Найти все натуральные n-значные числа, цифры в которых образуют строго возрастающую последовательность
Есть решение на Паскале:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
c1,c2,i,c3:longint;
n,f:integer;
begin
readln(n);
c1:=1;
for i:=1 to n-1 do
c1:=c1*10;
c2:=c1*10-1;
for i:=c1 to c2 do
begin
c3:=i;
f:=0;
repeat
if c3 mod 10<=(c3 div 10) mod 10 then f:=1;
c3:=c3 div 10;
until c3<10;
if f=0 then write(i,' ');
end;
end.
То что перевел я:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream.h>
#include <conio.h>
 
int main
{
   int c1,c2,c3;
   int n,f;
   cout<<"Введите число";
   cin>>n;
   for i=1<n-1
На for запнулся, потому что чувствую, что неправильно, и еще вот вопрос: как repeat и until
перевести?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2011, 17:48
Ответы с готовыми решениями:

Перевод кода с Паскаля (перевод в метры)
var a,b,d:integer; c,e:real; begin writeln('1-дециметр 2-километр'); writeln('3-метр 4-миллиметр'); ...

Перевод с паскаля на c#
Господа, подскажите, как будет выглядеть данный код, но на c# Type RefTree = ^Tree; Tree = record ...

Перевод из паскаля в с++
Помогите перевести type matrix = array of integer; var a:matrix; i,j,k:integer; begin k:=0; for i :=1 to...

33
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.01.2011, 16:11
Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream.h>
int main ()
{
 long int c1,c2,i,c3;
 int n,f;
 std::cin>>n;
 c1=1;
 for (i=1; i<=n-1; ++i)
 {
  c1*=10;
 }
 c2=c1*10-1;
 for (i=c1; i<=c2; ++i)
 {
  c3=i;
  f=0;
  do
  {
   if (c3%10<=(c3/10)%10)
   {
    f=1;
   }
   c3/=10;
  }
  while (c3>=10);
  if (f==0)
  {
   std::cout<<i<<" ";
  }
 } 
 return 0;
}
. Если без
C++
1
std::
работает, то выбрось. Если нет - уточни написание этого пространства.
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 16:52  [ТС]
Цитата Сообщение от MILAN Посмотреть сообщение
C++
1
#include <iostream.h>
Добавлено через 2 минуты
Timon779, какой у вас компилятор?
c <iostream.h> просто ошибка в написании была, у меня BORLANDC

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream.h>
int main ()
{
 long int c1,c2,i,c3;
 int n,f;
 std::cin>>n;
 c1=1;
 for (i=1; i<=n-1; ++i)
 {
  c1*=10;
 }
 c2=c1*10-1;
 for (i=c1; i<=c2; ++i)
 {
  c3=i;
  f=0;
  do
  {
   if (c3%10<=(c3/10)%10)
   {
    f=1;
   }
   c3/=10;
  }
  while (c3>=10);
  if (f==0)
  {
   std::cout<<i<<" ";
  }
 } 
 return 0;
}
. Если без
C++
1
std::
работает, то выбрось. Если нет - уточни написание этого пространства.
теперь осталась только одна ошибка в c1*=10;

Добавлено через 36 минут
подправил c1*=10 на c1=10, теперь программа запускается, но при вводе числа вылетает, а при повторном открытии никакого результата нет, только введенные ранее цифры отображаются
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.01.2011, 16:56
Цитата Сообщение от Timon779 Посмотреть сообщение
подправил c1*=10 на c1=10
Pascal
1
c1:=c1*10;
меняется именно на
C++
1
c1*=10;
.
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 17:00  [ТС]
хм... теперь с c1*=10; скомпилировалось, но почему-то все равно прога ничего не вычисляет
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.01.2011, 17:06
Я не проверял алгоритм, но перевод вроде точный. Давай задачу, попробую решить заново сразу на плюсах.
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 17:19  [ТС]
вот сама задача:
Дана строка, содержащая произвольный текст. Сколько слов в тексте? Сколько цифр в тексте?
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
15.01.2011, 17:27
Цитата Сообщение от Timon779 Посмотреть сообщение
Найти все натуральные n-значные числа, цифры в которых образуют строго возрастающую последовательность
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <sstream>
#include <string>
#include <cmath>
#include <algorithm>
#include <iterator>
 
int main()
{
    int n = 0;
    std::cin >> n;
    for(int i = pow(10.0, static_cast<double>(n - 1)); i < pow(10.0, static_cast<double>(n)) - 1; ++i)
    {
        std::ostringstream ost;
        ost << i;
        std::string str = ost.str(), tmp = ost.str();
        std::sort(tmp.begin(), tmp.end());
        std::string::iterator it = std::unique(tmp.begin(), tmp.end());
        tmp.resize(it - tmp.begin());
        if(tmp == str)
            std::cout << str << ' ';
    }
 
    return 0;
}
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.01.2011, 17:33
Надо вывести количество слов и цифр?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream.h>
int main ()
{
 string s; // не уверен в написании типа.
 int i,l;
 char c,oldc;
 unsigned long int words, d;
 std::cin>>s;
 l=s.length();
 for (i=1,words=0, d=0, oldc="\0"; i<=l; ++i)
 {
  c=s[i];
  if ((c>='0')&&(c<='9'))  
  {
   ++d;
  }
  if (c==' ')
  {
   if (((oldc>='a')&&(oldc>='z'))||((oldc>='A')&&(oldc>='Z'))||((oldc>='А')&&(oldc>='Я'))||((oldc>='а')&&(oldc>='я')))
   {
    ++words;
   }
  }
  if (i==l)
  {
   if (((c>='a')&&(c>='z'))||((c>='A')&&(c>='Z'))||((c>='А')&&(c>='Я'))||((c>='а')&&(c>='я')))
   {
    ++words;
   }
  }
 }
 std<<"\n"<<words<<" слов,"<<d<<" цифр.";
 return 0;
}
. Кстати, твой вариант это задачу тоже не решает.
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 18:01  [ТС]
черт, извините текст другой задачи вляпал, вот задание:
Найти все натуральные n-значные числа, цифры в которых образуют строго возрастающую последовательность
Но правда ту мне доделать надо было, так что сейчас попробую ваши примеры с кодами, а то мой только слова вычисляет, а числа нет
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
15.01.2011, 18:03
Timon779, Смотри пост #28.
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 18:08  [ТС]
Цитата Сообщение от asics Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <sstream>
#include <string>
#include <cmath>
#include <algorithm>
#include <iterator>
 
int main()
{
    int n = 0;
    std::cin >> n;
    for(int i = pow(10.0, static_cast<double>(n - 1)); i < pow(10.0, static_cast<double>(n)) - 1; ++i)
    {
        std::ostringstream ost;
        ost << i;
        std::string str = ost.str(), tmp = ost.str();
        std::sort(tmp.begin(), tmp.end());
        std::string::iterator it = std::unique(tmp.begin(), tmp.end());
        tmp.resize(it - tmp.begin());
        if(tmp == str)
            std::cout << str << ' ';
    }
 
    return 0;
}
у меня компилятор BORLANDC, в нем нет sstream.h, cmath.h, algorithm.h, iterator.h
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.01.2011, 18:24
Цитата Сообщение от Timon779 Посмотреть сообщение
repeat
C++
1
do
Цитата Сообщение от Timon779 Посмотреть сообщение
until
C++
1
while
, на сях может быть и в конце цикла, но с условием продолжения цикла, а не завершения как в until. Условия в скобках.
Цитата Сообщение от Timon779 Посмотреть сообщение
for
синтаксис for (начальное присваивание; условие продолжения; изменение счётчика) один простой оператор, или несколько простых операторов в фигурных скобках. Крайние операторы в круглых скобках могут быть составными, на сях такие операторы не выделяются операторными скобкам вообще, н простые операторы в их составе разделяются запятой, а не точкой с запятой. Точка с запятой ставится в конце или составного оператора, или отдельного простого оператора, не входящего в состав составного.
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
15.01.2011, 18:25
Timon779, Значит скачай новый компилятор, который поддержиавет стандарт С++.
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 18:32  [ТС]
мне только для этого нужно, потому что для института задачи решить надо, а там только с таким компилятором принимать хотят
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.01.2011, 18:32

Перевод из Паскаля в С++
Нужно переделать задачу из Паскаля в С++Builder. Поможете? Вот само задание:Описать функцию PowerA234(A), вычисляющую вторую, третью и...

Перевод из паскаля в С++
помогите, пожалуйста, перевести : Program enot; var c, a : integer; begin c:=0; repeat read (a); if (a mod...

Перевод из Паскаля в С
uses crt; var a,b,c,d:byte; begin clrscr; repeat writeln('Положение коня:'); write('a=');readln(a); write('b=');readln(b); ...

Перевод с Паскаля на c++
Вот код на Паскале : program Matrix40; var a:array of integer; NumMax,Num, RowMax, M, N, i, j:Integer; Row : set of byte; ...

Перевод с Паскаля на С++
Не могу ни как перевести полностью вот этот кусок кода на Паскале на си++ function h(var key: TKey): integer; {Вычисление хеш-функции} ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru