1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
1

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

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

Author24 — интернет-сервис помощи студентам
Задача:
Найти все натуральные 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2011, 17:48
Ответы с готовыми решениями:

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

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

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

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

33
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.01.2011, 18:06 2
Цитата Сообщение от Timon779 Посмотреть сообщение
и еще вот вопрос: как repeat и until
C
1
2
3
4
do 
{
/////
} while(....);
0
404 / 360 / 36
Регистрация: 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 цикле?
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
14.01.2011, 18:14  [ТС] 4
ну да, иначе уже алгоритм самой программы тогда нужно менять
0
404 / 360 / 36
Регистрация: 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 << ' ';
    }
}
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
14.01.2011, 20:42  [ТС] 6
попробовал и первый вариант и второй, но чего-то она ничего не рассчитывает, ввожу число и тут же захлопывается. getch() в конце прописан, clrscr убирал, чтобы посмотреть, но там результата от предыдущих действий не остается, только слова "введите число" и введенное мною число
0
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
14.01.2011, 21:51 7
Timon779, в конце добавь cin.get().
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
14.01.2011, 22:00  [ТС] 8
Цитата Сообщение от aram_gyumri Посмотреть сообщение
Timon779, в конце добавь cin.get().
в конце, это после последнего ифа, перед фигурной скобкой или еще дальше?
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
14.01.2011, 22:03 9
Timon779, как вариант

C++
1
system("pause");
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
14.01.2011, 22:04 10
перед последней скобкой.
или там же system("pause");
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
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;
}
0
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
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
15.01.2011, 13:11 13
Объяви переменную i вне цикла...
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 14:23  [ТС] 14
добавил в int n; то есть получилось int n,i;
Теперь первую ошибку выдает два раза, а остальные так же
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
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;
}
0
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;
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.01.2011, 15:52 17
Цитата Сообщение от Timon779 Посмотреть сообщение
std
а разве это не пространство имён для потоков?
Все
C++
1
:=
замени на
C++
1
=
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 15:56  [ТС] 18
Цитата Сообщение от taras atavin Посмотреть сообщение
а разве это не пространство имён для потоков?
Все
C++
1
:=
замени на
C++
1
=
ты по привычке знак присваивания как на Паскале чтоли написал?
В общем я заменил все := на =
теперь остались ошибки в std вначале и std в конце и в c1*=10;
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.01.2011, 16:05 19
Цитата Сообщение от Timon779 Посмотреть сообщение
ты по привычке знак присваивания как на Паскале чтоли написал?
Я больше привык к сям, но не зная задач, зато имея готовый текст на паскале, я взял его и стал переводить каждый оператор. Вот несколько присваиваний и пропустил.
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
15.01.2011, 16:10 20
Цитата Сообщение от Timon779 Посмотреть сообщение
#include <iostrem.h>
C++
1
#include <iostream.h>
Добавлено через 2 минуты
Timon779, какой у вас компилятор?
0
15.01.2011, 16:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2011, 16:10
Помогаю со студенческими работами здесь

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

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

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

Перевод с Паскаля на С++
Не могу ни как перевести полностью вот этот кусок кода на Паскале на си++ function h(var key:...

Перевод с паскаля в С++
помогите перевести код программы с паскаля в С++, пожалуйста! Program pr1; uses crt; var...

Перевод из Паскаля в C++
Пожалуйста помогите перевести одну функцию из Паскаля в C++. Буду очень признательна, так как очень...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru