Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
14.01.2011, 17:48     Перевод из Паскаля в с++ #1
Задача:
Найти все натуральные 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
перевести?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2011, 17:48     Перевод из Паскаля в с++
Посмотрите здесь:

C++ Перевод из паскаля в с ++
Перевод из Паскаля в C++ C++
Перевод из Паскаля в C++ C++
Перевод с Паскаля на С++ C++
C++ Перевод с паскаля на с++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 16:11     Перевод из Паскаля в с++ #21
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::
работает, то выбрось. Если нет - уточни написание этого пространства.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 16:52  [ТС]     Перевод из Паскаля в с++ #22
Цитата Сообщение от 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, теперь программа запускается, но при вводе числа вылетает, а при повторном открытии никакого результата нет, только введенные ранее цифры отображаются
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 16:56     Перевод из Паскаля в с++ #23
Цитата Сообщение от Timon779 Посмотреть сообщение
подправил c1*=10 на c1=10
Pascal
1
c1:=c1*10;
меняется именно на
C++
1
c1*=10;
.
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 17:00  [ТС]     Перевод из Паскаля в с++ #24
хм... теперь с c1*=10; скомпилировалось, но почему-то все равно прога ничего не вычисляет
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 17:06     Перевод из Паскаля в с++ #25
Я не проверял алгоритм, но перевод вроде точный. Давай задачу, попробую решить заново сразу на плюсах.
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 17:19  [ТС]     Перевод из Паскаля в с++ #26
вот сама задача:
Дана строка, содержащая произвольный текст. Сколько слов в тексте? Сколько цифр в тексте?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
15.01.2011, 17:27     Перевод из Паскаля в с++ #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;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 17:33     Перевод из Паскаля в с++ #28
Надо вывести количество слов и цифр?
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;
}
. Кстати, твой вариант это задачу тоже не решает.
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 18:01  [ТС]     Перевод из Паскаля в с++ #29
черт, извините текст другой задачи вляпал, вот задание:
Найти все натуральные n-значные числа, цифры в которых образуют строго возрастающую последовательность
Но правда ту мне доделать надо было, так что сейчас попробую ваши примеры с кодами, а то мой только слова вычисляет, а числа нет
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
15.01.2011, 18:03     Перевод из Паскаля в с++ #30
Timon779, Смотри пост #28.
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 18:08  [ТС]     Перевод из Паскаля в с++ #31
Цитата Сообщение от 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
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 18:24     Перевод из Паскаля в с++ #32
Цитата Сообщение от Timon779 Посмотреть сообщение
repeat
C++
1
do
Цитата Сообщение от Timon779 Посмотреть сообщение
until
C++
1
while
, на сях может быть и в конце цикла, но с условием продолжения цикла, а не завершения как в until. Условия в скобках.
Цитата Сообщение от Timon779 Посмотреть сообщение
for
синтаксис for (начальное присваивание; условие продолжения; изменение счётчика) один простой оператор, или несколько простых операторов в фигурных скобках. Крайние операторы в круглых скобках могут быть составными, на сях такие операторы не выделяются операторными скобкам вообще, н простые операторы в их составе разделяются запятой, а не точкой с запятой. Точка с запятой ставится в конце или составного оператора, или отдельного простого оператора, не входящего в состав составного.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
15.01.2011, 18:25     Перевод из Паскаля в с++ #33
Timon779, Значит скачай новый компилятор, который поддержиавет стандарт С++.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2011, 18:32     Перевод из Паскаля в с++
Еще ссылки по теме:

Перевод с паскаля в с++ C++
Перевод с Паскаля на C++ C++

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

Или воспользуйтесь поиском по форуму:
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 18:32  [ТС]     Перевод из Паскаля в с++ #34
мне только для этого нужно, потому что для института задачи решить надо, а там только с таким компилятором принимать хотят
Yandex
Объявления
15.01.2011, 18:32     Перевод из Паскаля в с++
Ответ Создать тему
Опции темы

Текущее время: 00:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru