-5 / 0 / 1
Регистрация: 04.03.2014
Сообщений: 68
1

Необходимо перевести задачу из C++ В Паскаль

16.06.2015, 14:30. Показов 1195. Ответов 9
Метки нет (Все метки)

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
#include <iostream>
using namespace std;
 
char sp5[]="               ";
int x5[20], n5, nrsol5=0, nr[20], val[20], sum[20], S;
 
int Valid5(int k)
{  sum[k]=sum[k-1]+val[k]*x5[k];
   if (sum[k]>S) return 0;
   if (k==n5 && sum[k]!=S) return 0;
   return 1;
}
 
void Afisare5()
{ int i,j;
  cout<<sp5;
  for(i=1;i<=n5;i++)
   if (x5[i]!=0) cout<<x5[i]<<"*"<<val[i]<<" lei + ";
  cout<<endl;
  nrsol5++;
}
 
void Back5()
{  int k=1, cand;
   x5[1]=-1;
   while (k>0)
    { cand=0;
      while (cand==0 && x5[k]<nr[k])
    { x5[k]++;
      cand=Valid5(k);
    }
      if (cand==0) k--;
      else if (k==n5) Afisare5();
       else {k=k+1; x5[k]=-1;}
   }
}
 
int main()
{ int i;
  cout<<endl<<endl<<sp5<<"Plata unei sume de bani"<<endl;
  cout<<endl<<sp5<<" Numarul tipuri monezi: "; cin>>n5;
  cout<<sp5<<" Dati suma de plata: "; cin>>S;
  cout<<endl;
  for (i=1;i<=n5;i++)
     { cout<<sp5<<" Valoare moneda tip "<<i<<": "; cin>>val[i];
       cout<<sp5<<" Numar monezi tip "<<i<<"  : "; cin>>nr[i];
     }
  cout<<endl<<"Solutiile sunt: "<<endl;
  Back5();
  cout<<endl<<sp5<<"Numar solutii: "<<nrsol5;
  return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2015, 14:30
Ответы с готовыми решениями:

Нужно перевести задачу с С на Паскаль
Помогите перевести задачу с С в паскаль. Заранее спасибо #include &lt;stdio.h&gt; int main() { ...

Откомпилировать задачу ( или перевести с СИ на Паскаль )
Задача звучит так : Вводятся поочередно данные о росте студентов группы. определить средний рост...

Перевести код из паскаль АБС в фри паскаль
Необходимо перевести этот код из паскаля АБЦ в фрипаскаль Спасибо! program test; const n=20;...

Снова перевести с Турбо Паскаля на Паскаль АВС или Паскаль АВС.Нет
program derevo; uses crt, graph; function cx(length, angle:real):integer; begin ...

9
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
16.06.2015, 20:27 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

вроде ничего не потерял...
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
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
const
    sp5 = '               ';
    n = 20;
 
var
    i: Byte;
    n5, s, nrsol5: Integer;
    x5, nr, val, sum: Array[1..20] Of Integer;
 
function Valid5(const k: Byte): Boolean;
begin
    sum[k] := sum[k - 1] + val[k] * x5[k];
    Valid5 := ((sum[k] > s) Or ((k = n5 ) And (sum[k] <> s)));
end;
 
procedure Afisare5();
begin
    Write(sp5);
    for i := 1 to n5 do
        if (x5[i] <> 0)
        then
            Write(x5[i], '*', val[i], ' lei + ');
    WriteLn;
    Inc(nrsol5);
end;
 
procedure Back5();
var
    cand: Boolean;
begin
    i := 1;
    x5[1] := -1;
    while (i > 0) do
    begin
        cand := False;
        while ((Not cand) And (x5[i] < nr[i])) do
        begin
            Inc(x5[i]);
            cand := Valid5(i);
        end;
        if (Not cand)
        then
            Dec(i)
        else
            if (i = n5)
            then
                Afisare5()
            else
            begin
                Inc(i);
                x5[i] := -1;
            end;
    end;
end;
 
begin
    nrsol5 := 0;
    WriteLn; WriteLn; WriteLn(sp5, 'Plata unei sume de bani'); WriteLn;
    WriteLn; Write(sp5, 'Numarul tipuri monezi: '); ReadLn(n5);
    Write(sp5, 'Dati suma de plata: '); ReadLn(s); WriteLn;
    for i := 1 to n5 do
    begin
        Write(sp5, 'Valoare moneda tip ', i, ': '); ReadLn(val[i]);
        Write(sp5, 'Numar monezi tip ', i, ': '); ReadLn(nr[i]);
    end;
    WriteLn; WriteLn('Solutiile sunt:');
    Back5();
    WriteLn; Write(sp5, 'Numar solutii: ', nrsol5);
end.
0
-5 / 0 / 1
Регистрация: 04.03.2014
Сообщений: 68
17.06.2015, 10:34  [ТС] 3
Компиллер говорит что в первом цикле for есть ошибка, говорит что переменная цикла должна описывться в нем самом, хотя у вас по идее оно в порядке, можете посмотреть, а то я ошибку не понимаю.?

Добавлено через 20 минут
Все нашел, перед циклом необходимо добавить var i:integer; и все работает, спасибо
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.06.2015, 10:36 4
Цитата Сообщение от pentelika007 Посмотреть сообщение
переменная цикла должна описывться в нем самом,
Ну и напиши в каждой процедуре
Pascal
1
2
var
    j:byte;
и замени i на j
0
-5 / 0 / 1
Регистрация: 04.03.2014
Сообщений: 68
17.06.2015, 14:28  [ТС] 5
Цитата Сообщение от Puporev Посмотреть сообщение
замени i на j
я конечно извиняюсь, но совсем не понимаю зачем менять i на j ?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.06.2015, 14:30 6
Ну раз уж зачем-то переменная i объявлена глобально, заведите в подпрограммах где это нужно переменную-счетчик j
0
-5 / 0 / 1
Регистрация: 04.03.2014
Сообщений: 68
17.06.2015, 14:34  [ТС] 7
и еще одно, оставляя эту строку
Pascal
1
x5, nr, val, sum: Array[1..20] Of Integer;
компиллер при выполнении в конце говорит что выходит за границу массива, соответственно насколько я знаю нужно поменять параметр [1..20] на [0..20], но в таком случае ответ выдает 0.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.06.2015, 14:38 8
Я хрен знает что эта программа должна делать, о чем она где ты это содрал...
Дуй на форум экстрасенсов.
0
-5 / 0 / 1
Регистрация: 04.03.2014
Сообщений: 68
17.06.2015, 14:43  [ТС] 9
Цитата Сообщение от Puporev Посмотреть сообщение
зачем-то
пошел немного другим путем, сделал ее локальной для каждого цикла, а верху уже поменял 1 на 0 и все заработала в штатном режиме, спасибо =)

Добавлено через 45 секунд
Цитата Сообщение от Puporev Посмотреть сообщение
где ты это содрал...
а вот не надо тут, в си++ я ее сам сделал =)

Добавлено через 1 минуту
Цитата Сообщение от Puporev Посмотреть сообщение
хрен знает что эта программа должна делать
а это уже потому что я не на русском языке учусь =)
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
17.06.2015, 19:55 10
pentelika007, вот поэтому нужно для начала описывать о чём задача и какой компилятор.

Не по теме:

с индексами массива да, фейл немного вышел.

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

задачу в паскаль
Нужно решить 1 задачу

переделать задачу из паскаль в делфи
Дана последовательность из N вещественных чисел. Первое число в последовательности нечетное. Найти...

Нужно переписать задачу с с (c++) на паскаль
int ans = a + b + c; ans = max(ans, (a + b) * c); ans = max(ans, a * (b + c)); ans = max(ans,...

Переведите задачу с С++ на язык Паскаль
long long a , b , c , d ; cin &gt;&gt; a &gt;&gt; b &gt;&gt; c &gt;&gt; d; for (int i = 0; i &lt;= 1000 ; i++) ...

Задачу в паскаль на определение значения функции
Есть следующая задача: Составить программу для вычисления значений переменных. Вывести на экран...

Необходимо составить задачу
В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:...


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

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

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