Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
3 / 3 / 1
Регистрация: 09.04.2012
Сообщений: 70
1

Перевести код с Pascal

21.10.2012, 23:30. Показов 1162. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
31
32
33
34
35
36
37
38
var N:integer;
    a:array[0..1000] of integer;
 
function Min(m1,m2:integer):integer;
begin
 if(m1>m2) then Min:=m2
 else Min:=m1;
end;
 
procedure output(count:integer);
var i:integer;
begin
 write(a[1]);
 for i:=2 to count do
  write('+',a[i]);
 writeln;
end;
 
procedure p(k,summ:integer);
var i:integer;
begin
 if(summ=N) and (k>2) then output(k-1);
 if summ<N then
 begin
  for i:=1 to Min(N-summ,a[k-1]) do
   begin
    a[k]:=i;
    p(k+1,summ+i);
   end;
 end;
end;
 
begin
 a[0]:=MaxInt;
 readln(N);
 p(1,0);
 readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2012, 23:30
Ответы с готовыми решениями:

Перевести код с Pascal на C
procedure isprime(n: longint; var ip: boolean); var i, sqrtn: longint; begin if (n &gt;= 5) and...

Перевести код с Pascal
Program zadanie2; uses crt; var a:arrayof integer; k,i,j,p:integer; begin clrscr; repeat;...

Перевести код с Pascal
program Project2; uses crt; var a1, a2, b1, b2, c1, c2: Integer; begin Writeln ('Enter...

Перевести код с Pascal
Здравствуйте! Как написать такой код в си? program 1; var y:real; x:integer; begin ...

4
46 / 46 / 18
Регистрация: 25.10.2011
Сообщений: 183
22.10.2012, 13:56 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Держи:
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
#include <stdio.h>
#include <conio.h>
#define Min( a, b ) ( ((a) < (b)) ? (a) : (b) )
#define MaxInt 32767;
int N,a[1000];
void output(int count);
void p(int k,int summ);
int main(int argc, char* argv[])
{
        a[0]=MaxInt;
        scanf("%i",&N);
        p(1,0);
        getch();
        return 0;
}
void output(int count)
{
        int i;
        printf("%i",a[1]);
        for(i=2;i<=count;i++)
                printf("+%i",a[i]);
        printf("\n");
}
void p(int k,int summ)
{
        int i;
        if ((summ==N)&&(k>2)) output(k-1);
        if (summ<N){
                for(i=1;i<=Min(N-summ,a[k-1]);i++){
                a[k]=i;
                p(k+1,summ+i);
                }
        }
}
1
3 / 3 / 1
Регистрация: 09.04.2012
Сообщений: 70
22.10.2012, 18:53  [ТС] 3
Hunter13ua, дуже дякую!!!


А МОЖЕТЕ ПОЯСНИТИ ЩО КОЖНА СТРОКА ОЗНАЧАЄ?
0
46 / 46 / 18
Регистрация: 25.10.2011
Сообщений: 183
23.10.2012, 01:19 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Dubas Посмотреть сообщение
А МОЖЕТЕ ПОЯСНИТИ ЩО КОЖНА СТРОКА ОЗНАЧАЄ?
Не проблема
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> 
// библиотека ввода/вывода (scanf/printf) 
#include <conio.h> 
// включает функцию getch(); 
#define Min( a, b ) ( ((a) < (b)) ? (a) : (b) ) 
// задает функцию Min(a,b) - если А меньше Б, возвращает А, иначе возвращает Б 
#define MaxInt 32767; 
// в паскале есть эта константа, тут пришлось задавать так 
int N,a[1000]; /* n:integer; a:array[0..1000] of integer; */
void output(int count); /* задание прототипа процедуры output(count:integer); */
void p(int k,int summ); /* задание прототипа процедуры p(k,summ:integer); */
int main(int argc, char* argv[]) /* основная программа */
{ /* begin */
        a[0]=MaxInt; /* a[0]:=MaxInt; */
        scanf("%i",&N); /* readln(N); */
        p(1,0);
        getch(); /* ждёт нажатие любой клавиши перед закрытием программы */
        return 0; 
}
void output(int count) /* procedure output(count:integer); */
{
        int i; /* i:integer; */
        printf("%i",a[1]); /* write(a[1]); */
        for(i=2;i<=count;i++) /* for i=2 to count do*/
                printf("+%i",a[i]); /* write(a[i]); */
        printf("\n"); /* writeln(); */
}
void p(int k,int summ) /* procedure p(k,summ:integer) */
{
        int i;
        if ((summ==N)&&(k>2)) output(k-1); /* if (summ=N) and (k>2) then output(k-1); */
        if (summ<N){
                for(i=1;i<=Min(N-summ,a[k-1]);i++){ /* for i=1 to Min(N-summ,a[k-1]) do begin */
                a[k]=i;
                p(k+1,summ+i);
                }
        }
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
23.10.2012, 11:35 5
Цитата Сообщение от Hunter13ua Посмотреть сообщение
#define MaxInt 32767; // в паскале есть эта константа, тут пришлось задавать так
C
1
2
3
4
5
6
7
#include <limits.h>
#include <stdio.h>
 
int main(void) {
    printf("%d\n", INT_MAX);
    return 0;
}
0
23.10.2012, 11:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2012, 11:35
Помогаю со студенческими работами здесь

Перевести код из pascal в С
uses crt; var a,b:real; n:integer; begin clrscr; repeat write('Введите число &quot;a&quot;...

Перевести код с Pascal
Program Zavdanya_3; Uses crt; Type masiv=arrayof Integer; Var F,f1:file of integer; ...

Перевести код с Pascal
помогите пожалуйста,нужно перевести программу на си) uses crt; function...

Перевести код с Pascal
вот есть кусочек кода.я пытался передалть на застопорился на кодах клавиш repeat kod:=readkey;...


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

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