Форум программистов, компьютерный форум 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++ Перевод с паскаля на с++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.01.2011, 18:06     Перевод из Паскаля в с++ #2
Цитата Сообщение от Timon779 Посмотреть сообщение
и еще вот вопрос: как repeat и until
C
1
2
3
4
do 
{
/////
} while(....);
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
14.01.2011, 18:09     Перевод из Паскаля в с++ #3
Timon779, эти действия c1:=c1*10; c2:=c1*10-1; должны происходить в этом for i:=1 to n-1 do цикле?
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
14.01.2011, 18:14  [ТС]     Перевод из Паскаля в с++ #4
ну да, иначе уже алгоритм самой программы тогда нужно менять
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
14.01.2011, 18:37     Перевод из Паскаля в с++ #5
Цитата Сообщение от Timon779 Посмотреть сообщение
ну да, иначе уже алгоритм самой программы тогда нужно менять
Тогда перевод
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
#include <iostream.h>
void main()
{
    long c1,c2,c3,i;
    int n,f;
    cin >> n;
    c1=1;
    for (i=1;i<=n-1;i++)
    {
        c1=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=c3/10;
        } while (c3<10);
        if (f==0) cout << i << ' ';
    }
}
Иначе такой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream.h>
void main()
{
    long c1,c2,c3,i;
    int n,f;
    cin >> n;
    c1=1;
    for (i=1;i<=n-1;i++)
        c1=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=c3/10;
        } while (c3<10);
        if (f==0) cout << i << ' ';
    }
}
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
14.01.2011, 20:42  [ТС]     Перевод из Паскаля в с++ #6
попробовал и первый вариант и второй, но чего-то она ничего не рассчитывает, ввожу число и тут же захлопывается. getch() в конце прописан, clrscr убирал, чтобы посмотреть, но там результата от предыдущих действий не остается, только слова "введите число" и введенное мною число
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
14.01.2011, 21:51     Перевод из Паскаля в с++ #7
Timon779, в конце добавь cin.get().
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
14.01.2011, 22:00  [ТС]     Перевод из Паскаля в с++ #8
Цитата Сообщение от aram_gyumri Посмотреть сообщение
Timon779, в конце добавь cin.get().
в конце, это после последнего ифа, перед фигурной скобкой или еще дальше?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
14.01.2011, 22:03     Перевод из Паскаля в с++ #9
Timon779, как вариант

C++
1
system("pause");
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
14.01.2011, 22:04     Перевод из Паскаля в с++ #10
перед последней скобкой.
или там же system("pause");
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
14.01.2011, 22:45     Перевод из Паскаля в с++ #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()
{
    int n;
    cin >> n;
 
    int c1 = 1;
    for(int i = 0; i < n-1; ++i) c1*= 10;
 
    int c2 = c1 * 10 - 1;
    int c3;
    int f;
 
    for(int 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) cout << i << ' ';
    }
 
    cout << endl;
 
    return 0;
}
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 02:54  [ТС]     Перевод из Паскаля в с++ #12
Цитата Сообщение от rangerx Посмотреть сообщение
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()
{
    int n;
    cin >> n;
 
    int c1 = 1;
    for(int i = 0; i < n-1; ++i) c1*= 10;
 
    int c2 = c1 * 10 - 1;
    int c3;
    int f;
 
    for(int 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) cout << i << ' ';
    }
 
    cout << endl;
 
    return 0;
}
пишет:
1)Multiple declaration for 'i'
2)Expression syntax
3) 'c2' is assigned a value that is never used
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
15.01.2011, 13:11     Перевод из Паскаля в с++ #13
Объяви переменную i вне цикла...
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 14:23  [ТС]     Перевод из Паскаля в с++ #14
добавил в int n; то есть получилось int n,i;
Теперь первую ошибку выдает два раза, а остальные так же
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 14:38     Перевод из Паскаля в с++ #15
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 <iostrem.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;
}
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 15:49  [ТС]     Перевод из Паскаля в с++ #16
Цитата Сообщение от 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 <iostrem.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;
}
сделал, как вы написали, теперь он такие ошибки выдает:
8:Type qualifier 'std' must be a struct or class name
8:Statement missing;
9:Expression syntax
12:Expression syntax
17:Expression syntax
18:Expression syntax
23:Multiple declaration for 'f'
23:Expression syntax
30:Type qualifier 'std' must be a struct or class name
30:Statement missing;
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 15:52     Перевод из Паскаля в с++ #17
Цитата Сообщение от Timon779 Посмотреть сообщение
std
а разве это не пространство имён для потоков?
Все
C++
1
:=
замени на
C++
1
=
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 15:56  [ТС]     Перевод из Паскаля в с++ #18
Цитата Сообщение от taras atavin Посмотреть сообщение
а разве это не пространство имён для потоков?
Все
C++
1
:=
замени на
C++
1
=
ты по привычке знак присваивания как на Паскале чтоли написал?
В общем я заменил все := на =
теперь остались ошибки в std вначале и std в конце и в c1*=10;
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 16:05     Перевод из Паскаля в с++ #19
Цитата Сообщение от Timon779 Посмотреть сообщение
ты по привычке знак присваивания как на Паскале чтоли написал?
Я больше привык к сям, но не зная задач, зато имея готовый текст на паскале, я взял его и стал переводить каждый оператор. Вот несколько присваиваний и пропустил.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2011, 16:10     Перевод из Паскаля в с++
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
15.01.2011, 16:10     Перевод из Паскаля в с++ #20
Цитата Сообщение от Timon779 Посмотреть сообщение
#include <iostrem.h>
C++
1
#include <iostream.h>
Добавлено через 2 минуты
Timon779, какой у вас компилятор?
Yandex
Объявления
15.01.2011, 16:10     Перевод из Паскаля в с++
Ответ Создать тему
Опции темы

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