Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 16.03.2010
Сообщений: 67
1

Перевод из C++ в Pascal

23.03.2010, 23:15. Показов 1509. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ, помогите перевести из С в Паскаль. Я в С вообще не шарю,но судя по задаче алгоритм вполне легкий, полностью линейный.Очень надо. Заранее благодарен!

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <stdio.h>
#include <string.h>
 
/* Final state of the problema */
int sol[] = {0,3,4,3,0,5,6,5,0,1,2,1,0,7,8,7,0,9,10,9,0,1,2,1};
/* Actual state */
int v[24];
 
/* Rotates the vector */
void Rotar(int rotacion) {
   int vtmp[24];
   int i;
 
   /* Get a copy of the actual state */
   memcpy(vtmp, v, sizeof(v));
 
   /* 1 Left Wheel Clockwise rotation */
   if(rotacion == 1) {
      for(i=0;i<12;i++) {
         v[(i+2)%12] = vtmp[i%12];
      }      
      v[21] = v[9];
      v[22] = v[10];
      v[23] = v[11];      
   }
   /* 2 Right Wheel Clockwise rotation */
   else if(rotacion == 2) {
      for(i=2;i<12;i++) {
         v[i-2+12] = vtmp[i+12];
      }      
      v[22] = vtmp[12];
      v[23] = vtmp[13];
      v[9] = v[21];
      v[10] = v[22];
      v[11] = v[23];
   }
   /* 3 Left Wheel Counter-Clockwise rotation */
   else if(rotacion == 3) {
      for(i=2;i<12;i++) {
         v[i-2] = vtmp[i];
      }      
      v[21] = v[9] = vtmp[11];
      v[22] = v[10] = vtmp[0];
      v[23] = v[11] = vtmp[1];
   }
   /* 4 Right Wheel Counter-Clockwise rotation */
   else if(rotacion == 4) {
      for(i=0;i<12;i++) {
         v[((i+2)%12)+12] = vtmp[(i%12)+12];
      }
      v[12] = vtmp[22];
      v[13] = vtmp[23];
      v[9] = v[21];
      v[10] = v[22];
      v[11] = v[23];
      
   }
}
 
/* returns 1 if we've found the solution */
int Solucion(int *s) {
   int i;
   for(i=0;i<24;i++) {
      if(s[i] != sol[i]) return 0;
   }
   return 1;
}
 
/* Generates another level */
void Generar(int nivel, int *s) {      
      /* Undo previous rotation */
      if(s[nivel] == 1) Rotar(3);
      if(s[nivel] == 2) Rotar(4);
      if(s[nivel] == 3) Rotar(1);
      if(s[nivel] == 4) Rotar(2);
      s[nivel]++;
      if(nivel>0) {
         if((s[nivel-1] == 1) && (s[nivel] == 3)) s[nivel]++;
         else if((s[nivel-1] == 2) && (s[nivel] == 4)) s[nivel]++;
         else if((s[nivel-1] == 3) && (s[nivel] == 1)) s[nivel]++;
         else if((s[nivel-1] == 4) && (s[nivel] == 2)) s[nivel]++;
      }
      
      if(s[nivel] <= 4)
      {
         Rotar(s[nivel]);         
      }
}
 
/* returns 1 if there's no more brothers */
 
int NoMasHermanos(int nivel, int *s) {
   if(s[nivel] == 4) return 1;
   else return 0;
}
 
/* Backtracking */
void buscar(int *s) {
   int i, j, nivel = 0, fin = 0;
   /* s = initial solution */
   for(i=0;i<16;i++) s[i] = 0;
   while(nivel>=0) {
      Generar(nivel, s);      
      if(s[nivel] > 4) {
         s[nivel] = 0;   
         nivel--;
         continue;
      }
      if(Solucion(v)) {
         for(j=0;j<=nivel;j++) printf("%d", s[j]);
         printf("\n");
         return;
      }
      else if(nivel<15) {
         nivel++;
      }
      else {
         while(NoMasHermanos(nivel, s) && nivel >= 0 ) {
            Rotar(2);
            s[nivel] = 0;   
            nivel--;            
         }
      
      }
   }
   printf("NO SOLUTION WAS FOUND IN 16 STEPS\n");
}
 
/* Start */
int main() {
   int s[16];   
   int i, j, casos;
   scanf("%d", &casos);
   for(i=0;i<casos;i++) {
      for(j=0;j<24;j++) {
         scanf("%d", &v[j]);
      }
      if(Solucion(v)) printf("PUZZLE ALREADY SOLVED\n");
      else buscar(s);
   }
   return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2010, 23:15
Ответы с готовыми решениями:

Перевод программы с Turbo Pascal на Pascal ABC.NET
написала программу в паскаль турбо на рабочем компьютере. перенесла в паскаль авсNet так как дома...

Перевод программы с turbo pascal на Pascal ABC
Есть программа, которая строит треугольник Серпинского методом хаоса, но она конфликтует с графикой...

Перевод с Pascal на C
Помогите пожалуйста перевести с Pascal на C, пытался но ничего стоящего не выходит Заранее...

Перевод из Pascal в C
Помогите пожалуйста перевести следующий код из паскаля в си: Program Failbl; Const m=; Var...

0
23.03.2010, 23:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2010, 23:15
Помогаю со студенческими работами здесь

Перевод с Pascal на C++
Вечер добрый. Перевожу с pascal на c++. Подскажите или отредактируйте код, что не так? program...

Перевод с Pascal на Си
Доброго времени суток, помогите пожалуйста перевести с Pascal на Си или может есть что нибудь...

Перевод с c++ на pascal
Помогите плиз перевести код с с++ на паскаль. Дан файл неопределённой длины. посчитать сколько в...

Перевод с Pascal на С++
Ребят, переведите кому не сложно, буду благодарна. program z1; var n,s,i : integer; begin ...


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

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