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

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

Восстановить пароль Регистрация
 
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
08.05.2012, 01:06     Не могу перевести их pascal #1
Добрый день.
написал программу на паскале

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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2012, 01:06     Не могу перевести их pascal
Посмотрите здесь:

Перевести из Pascal на С++ C++
C++ перевести с pascal в С++
Перевести c Pascal в C++ C++
C++ перевести с Pascal на С++
C++ Перевести с Pascal на C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
08.05.2012, 01:13     Не могу перевести их pascal #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();
}
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
08.05.2012, 01:17  [ТС]     Не могу перевести их pascal #3
Вечный цикл получается
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
08.05.2012, 01:25     Не могу перевести их pascal #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;
}
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
08.05.2012, 01:29  [ТС]     Не могу перевести их pascal #5
Не работает так, как в паскале. Но более неактуально, так как нашел ошибку в алгоритме.
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
08.05.2012, 01:31     Не могу перевести их pascal #6
Цитата Сообщение от kkk008009kkk Посмотреть сообщение
Не работает так, как в паскале. Но более неактуально, так как нашел ошибку в алгоритме.

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

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

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

C++
1
if (x[k]==k)
Ну и вообще преводи внимательней!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2012, 01:37     Не могу перевести их pascal
Еще ссылки по теме:

Перевести с pascal на c++ C++
C++ Перевести с pascal в C++
Перевести с Pascal на C++ C++

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

Или воспользуйтесь поиском по форуму:
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
08.05.2012, 01:37  [ТС]     Не могу перевести их pascal #7
Это уже неважно(но спасибо, учту), сам алгоритм неправильный.
Yandex
Объявления
08.05.2012, 01:37     Не могу перевести их pascal
Ответ Создать тему
Опции темы

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