Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Mud
1 / 1 / 0
Регистрация: 24.06.2016
Сообщений: 143
1

Как можно перевести этот код с паскаля в с++?

11.06.2017, 17:57. Просмотров 423. Ответов 12
Метки нет (Все метки)

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
uses crt;
const n=10;
 
var a:array[1..n] of integer;
    i,j,p,k:byte;
    
    
    
begin
clrscr;
for i:=1 to n do
 begin
 a[i]:=random(100)-random(100);
 write(a[i],' ');
 end;
 writeln;
if a[1]>0 then p:=1
   else p:=0;
k:=0;
for i:=2 to n do
 if (a[i]>0) and (p=0) then begin
                         write(' ',i);
                         inc(k);
                         p:=1;
                        end
    else if (a[i]<0) and (p=1) then begin
          write(' ',i);
          inc(k);
          p:=0;
         end;
writeln;
writeln('Всего ',k,' раз(а)');
end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2017, 17:57
Ответы с готовыми решениями:

Как можно перевести этот код с паскаля в с++?
program razbienie_mnozhestwa(input,output); var i,j,k,n:byte;wper:arrayof...

Как можно перевести фрагмент кода с паскаля в с++?
begin j:=1; {номер первого блока} repeat write('( '); for i:=j to n...

Можно как-то оптимизировать этот код?
#include &lt;iostream&gt; using namespace std; int main() { unsigned int num,...

перевести код из паскаля на с++
var i, a, n, s: int64; j, t:longint; procedure out; begin writeln (s); ...

Перевести код с Паскаля на С++
Program proga; uses crt; Type gostinica= record FIO:string; nomer:integer;...

12
MihaelK
20 / 20 / 9
Регистрация: 25.11.2016
Сообщений: 105
11.06.2017, 19:14 2
прочесть книжку по плюсам, где будет расписано как использовать циклы, как выводить что то на экран.
Например, заполнение+вывод массива :
Pascal
1
2
3
4
5
6
7
8
9
10
11
uses crt;
const n=10;
var a:array[1..n] of integer;
begin
for i:=1 to n do
begin
a[i]:=random(100)-random(100);
write(a[i],' ');
end;
writeln;
end.
будет выглядеть примерно так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
 
#define n 10
 
int main(void) {
 
    int a[n]; //var a:array[1..n] of integer;
    int i;
    for (i = 0; i < n; i++) {//т.к. в си индексация с 0 а не с 1
        a[i] = (rand() % 100) - (rand() % 100); //random(100) - random(100);
        printf("%d ", a[i]); //write(a[i],' ');
    }
    printf("\n"); //writeln;
    return 0;
}
0
Mud
1 / 1 / 0
Регистрация: 24.06.2016
Сообщений: 143
11.06.2017, 20:02  [ТС] 3
MihaelK, хорошо, а как сделать , чтобы индекс с 1 начинался?
0
MihaelK
20 / 20 / 9
Регистрация: 25.11.2016
Сообщений: 105
11.06.2017, 20:19 4
Цитата Сообщение от Mud Посмотреть сообщение
чтобы индекс с 1 начинался?
никак. а зачем это нужно?
0
Mud
1 / 1 / 0
Регистрация: 24.06.2016
Сообщений: 143
11.06.2017, 20:26  [ТС] 5
MihaelK, для того, чтобы когда я ввожу размер массива, например 5, и мне нужен элемент 3, то он покажет 4 элемент сначала , а нужен 3.
0
MihaelK
20 / 20 / 9
Регистрация: 25.11.2016
Сообщений: 105
11.06.2017, 20:36 6
Цитата Сообщение от Mud Посмотреть сообщение
MihaelK, для того, чтобы когда я ввожу размер массива, например 5, и мне нужен элемент 3, то он покажет 4 элемент сначала , а нужен 3.
у 3-его элемента будет индекс 2. По нему и нужно обращаться.
Неправильное решение - написать функцию которая будет преобразовывать паскальный индекс в сишный.
0
Mud
1 / 1 / 0
Регистрация: 24.06.2016
Сообщений: 143
11.06.2017, 20:57  [ТС] 7
MihaelK, проблема заключается в том, что у меня есть задача(посчитать сколько раз меняется знак в массиве, и запомнить номер где произошла смена знака)
так вот когда программа считает не понятно чуть-чуть
пример, 5 элементов -1 2 3 -4 5
программы выведет 1, 3 и 4 элемент массива, но если посмотреть на массив, то видим 2, 4 и 5 элемент (смена знака )
вот в чем вся проблема
код программы
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
#include <iostream>
#include <ctime>
 
int main()
{
    using namespace std;
    setlocale(LC_ALL, "RUS");
    size_t size;
    cout << "Size: ";
    cin >> size;
    int *array = new int[size];
    srand(time(NULL));
 
 
    for(int i = 0; i < size; i++)
        
    cin >> array[i];
 
    
 
    for(int i = 1; i < size - 1; i++)
        if ((array[i] < 0 && array[i - 1] > 0) || (array[i] > 0 && array[i - 1] < 0))
            cout << "Pos: "  << i << endl;
    delete [] array;
    system("pause");
    return 0;
}
0
MihaelK
20 / 20 / 9
Регистрация: 25.11.2016
Сообщений: 105
11.06.2017, 21:10 8
в коде выше последний элемент( array[size-1] ) бесполезен, т.к. он вводится но не прогоняется вторым циклом.
1
Mud
1 / 1 / 0
Регистрация: 24.06.2016
Сообщений: 143
12.06.2017, 00:20  [ТС] 9
MihaelK, ладно, спасибо за консультацию

Добавлено через 3 часа 3 минуты
MihaelK, а как в этом коде
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
#include <iostream>
#include <ctime>
 
int main()
{
    using namespace std;
    setlocale(LC_ALL, "RUS");
    size_t size;
    cout << "Size: ";
    cin >> size;
    int *array = new int[size];
    srand(time(NULL));
 
 
    for(int i = 0; i < size; i++)
        
    cin >> array[i];
 
    
 
    for(int i = 1; i < size - 1; i++)
        if ((array[i] < 0 && array[i - 1] > 0) || (array[i] > 0 && array[i - 1] < 0))
            cout << "Pos: "  << i << endl;
    delete [] array;
    system("pause");
    return 0;
}
посчитать сколько раз менялся знак?
0
MihaelK
20 / 20 / 9
Регистрация: 25.11.2016
Сообщений: 105
12.06.2017, 03:59 10
Mud, во первых, принять во внимание моё предыдущее сообщение.
Далее - вместо вывода индекса увеличивать значение переменной счетчика, а потом вывести её на экран.

P.S. если нужно выводить индексацию с 1, то просто нужно прибавлять 1 в момент вывода.
P.S.S. также нужно использовать теги форматирования кода, а то читать просто невозможно.
1
wolf1396
6 / 6 / 6
Регистрация: 07.05.2013
Сообщений: 222
12.06.2017, 17:19 11
из индекса паскалевского вычитаешь единицу и получаешь индекс сишный, считать нужно с 0 просто
0
Mud
1 / 1 / 0
Регистрация: 24.06.2016
Сообщений: 143
13.06.2017, 00:09  [ТС] 12
MihaelK, я чуть - чуть переделал код
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
#include <iostream>
#include <ctime>
 
int main()
{
    using namespace std;
    setlocale(LC_ALL, "RUS");
    size_t size;
    cout << "Количество элементов в массиве: ";
    cin >> size;
    int *array = new int[size];
    srand(time(NULL));
    int n = -1 ;
 
    for(int i = 0; i < size; i++)
        
    cin >> array[i];
 
    
      for(int i = 1; i < size - 1; i++)
        if ((array[i] < 0 && array[i - 1] > 0) || (array[i] > 0 && array[i - 1] < 0))
    
            cout << "Смена знака на позиции № "  << i+1 << endl;
 
 
 
    for(int i = 1; i < size - 1; i++)
        if ((array[i] < 0 && array[i - 1] > 0) || (array[i] > 0 && array[i - 1] < 0))
        
            n = i + 1;
            cout << "Количество смен знака: "  << n << endl;
 
 
    delete [] array;
    system("pause");
    return 0;
}
Вопрос, почему программа не записывает последний элемент который поменял знак?
0
TRam_
зомбяк
789 / 725 / 231
Регистрация: 14.05.2017
Сообщений: 2,477
13.06.2017, 01:44 13
замени потому что должно быть
C++
1
for(int i = 1; i < size; i++)
1
13.06.2017, 01:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2017, 01:44

Перевести код с Паскаля на С++
Фирме принадлежат два магазина. Известна стоимость товаров, проданных в каждом...

Перевести код паскаля в с++
Нужно перевести данный код паскаля в с++. Задание: Найти в строке все заданные...

Перевести код из Паскаля в Си++
Переведите пожалуйста из Паскаля в Си++, кому не сложно.


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

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

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