Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
#1

Не могу перевести их pascal - C++

08.05.2012, 01:06. Просмотров 344. Ответов 6
Метки нет (Все метки)

Добрый день.
написал программу на паскале

Pascal
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
var
x:array [1..100] of integer;
a,s,d,f,n,i,j,k:integer;
rt,rt2,h,c:integer;
begin
writeln('введите n');
readln(n);
x[1]:=1;
for i:=2 to n do
 
x[i]:=0;
 
writeln;
k:=n;
c:=1;
repeat
x[k]:=x[k]+1;
for i:=1 to n do
write(x[i], ' ');
writeln;
 
if x[k]=k then begin
x[k]:=0;
if x[k-c]=k-c then
inc(c);
x[k-c]:=x[k-c]+1;
end;
until x[1]=2;
 
end.
Переписал на Ci
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
35
36
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
 
int main(){
     
  int x[100];
 int a,s,d,f,n,i,j,k;       
int rt,rt2,h,c;
scanf("%d",&n);
x[1]=1;
 
for (i=2;i<=n;i++) {
 
x[i]=0;
printf("%d \n",x[i]);}
 
 
printf("\n");
k=n;
c=1;
do
{
x[k]=x[k]+1;
for (i=1;i<=n;i++) 
printf("%d " ,x[i]);
printf("\n");
 
if (x[k]=k) {
x[k]=0;
if (x[k-c]=k-c) c=c+1;
x[k-c]=x[k-c]+1;
}}
while (x[1]!=2);
getch();
}
Программа не работает в Си. В паскале все отлично

Условие задачи:
Напечатать все последовательности положительных целых чисел длины k, у которых i-ый член не превосходит i
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2012, 01:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу перевести их pascal (C++):

Перевести из Pascal в С++ - C++
Помогите перевести программу на C++ Исходник Pascal: Program Posled; Uses winCRT; Var Eps, AOld, ANew : Real; N : Integer;...

Перевести с Pascal на C++ - C++
Каково содержание задачи? var a:array of integer; i,j,k,l,q,w,e:integer; begin // Randomize; for i:=1 to 10 do begin...

Перевести с Pascal на C++ - C++
Здравствуйте! Помогите пожалуйста перевести вот эти программы с языка Pascal на C++ Сам я очень плохо знаю C++ поэтому был бы крайне...

Перевести из Pascal на C++ - C++
Var n,p1,p2,i,k,j:integer; Begin write('Введите N: ');readln(n); For i:=n-1 downto 2 do Begin k:=0; For...

Перевести с Pascal на C++ - C++
Была цепь длиной L, N рыбин. Зная координаты головы и хвоста каждой из них, подсчитайте, на какие сутки у собаки появится голод, если он...

Перевести с Pascal на C++ - C++
var n:longint;max:integer; begin writeln('n='); readln(n); max:=0 ; while n&gt;0 do begin if max&lt;n mod 10...

6
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
08.05.2012, 01:13 #2
не проверял, исправил что увидел

В Си, индексация массивов идет с 0.

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
35
36
37
38
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
 
int main()
{
     
  int x[100];
 int a,s,d,f,n,i,j,k;       
int rt,rt2,h,c;
scanf("%d",&n);
x[0]=1;
 
for (i=1; i<n; i++)
 {
x[i]=0;
printf("%d \n",x[i]);
}
 
 
printf("\n");
k=n;
c=1;
do
{
x[k]=x[k]+1;
for (i=0;i<n;i++) 
printf("%d " ,x[i]);
printf("\n");
 
if (x[k]=k) {
x[k]=0;
if (x[k-c]=k-c) c=c+1;
x[k-c]=x[k-c]+1;
}}
while (x[1] != 2);
getch();
}
1
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
08.05.2012, 01:17  [ТС] #3
Вечный цикл получается
0
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
08.05.2012, 01:25 #4
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
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
 
int main()
{
     
    int x[100];
    int a,s,d,f,n,i,j,k;       
    int rt,rt2,h,c;
    scanf("%d",&n);
    
    x[0] = 1;
    for (i = 1; i < n; i++) 
    {
        x[i] = 0;
    }
 
    printf("\n");
    k = n;
    c = 0;
    do
    {
        x[k] = x[k] + 1;
        for (i = 1; i < n;i++) 
            printf("%d " ,x[i]);
        printf("\n");
 
        if (x[k]=k) 
        {
            x[k] = 0;
            if (x[k - c] = k - c) 
                c = c + 1;
        x[k - c] =x[k - c] + 1;
        }
    }
    while (x[0] != 2);
    
    getch();
 
    return 0;
}
1
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
08.05.2012, 01:29  [ТС] #5
Не работает так, как в паскале. Но более неактуально, так как нашел ошибку в алгоритме.
0
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
08.05.2012, 01:31 #6
Цитата Сообщение от kkk008009kkk Посмотреть сообщение
Не работает так, как в паскале. Но более неактуально, так как нашел ошибку в алгоритме.

Ну да не заметил на ночь глядя!

тут ты присваеваешь

C++
1
if (x[k]=k)
нужно сравнивать

C++
1
if (x[k]==k)
Ну и вообще преводи внимательней!
1
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
08.05.2012, 01:37  [ТС] #7
Это уже неважно(но спасибо, учту), сам алгоритм неправильный.
0
08.05.2012, 01:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2012, 01:37
Привет! Вот еще темы с ответами:

Перевести с Pascal на C++ - C++
Всем привет) есть задачи: 1) Поменять местами в каждом слове первую половину слова со второй. Есть решение этих задач, но нужно мне...

Перевести с Pascal на C++ - C++
Всем привет) есть задачи: 2) Слова, содержащие сочетание ‘кот’, расположить в конце последовательности, сохраняя исходный порядок...

Перевести из Pascal в С++ - C++
Заранее благодарен var s, a, x :real;i,j, fac: integer; begin cls; readln(x); begin for j:=1 to 15 do fac:=fac*(j*2+1); ...

Перевести с Pascal на C++ - C++
uses crt; var a,y:extended; i:longint; begin clrscr; write('a=');readln(a); if a&lt;1 then begin writeln('1'); ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru