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

C Pascal на C++

19.11.2009, 20:48. Показов 1154. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
ребята,а кто может перевести с Pascal на C++ эту программу - https://www.cyberforum.ru/post185668.html Жду ваших ответов

Добавлено через 32 секунды
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
program sort;
uses crt;
const n=6;
var m:array[1..n,1..n]of integer;
    i,j,index,k,max,buf:integer;
begin
clrscr;
randomize;
writeln('Матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    m[i,j]:=random(10);
    write(m[i,j]:3);
   end;
  writeln;
 end;
max:=m[1,1];
index:=1;
for i:=1 to n do
if m[i,i]>max then
 begin
  max:=m[i,i];
  index:=i;
 end;
writeln('Максимальный элемент=',max,' строка=',index);
repeat
write('Номер строки для перестановки k=');
readln(k);
until k in [1..n];
if index<>k then
for i:=1 to n do
  begin
   buf:=m[index,i];
   m[index,i]:=m[k,i];
   m[k,i]:=buf;
 end;
writeln('Измененная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(m[i,j]:3);
  writeln;
 end;
readln
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2009, 20:48
Ответы с готовыми решениями:

Turbo Pascal, Pascal ABC, Free Pascal, PascalABC.NET - в чем разница?
Всем привет, решил изучать Паскаль, но на форуме увидел 4 его версии - Turbo Pascal, Pascal ABC,...

Различия трансляторов Pascal ABC.Net и Turbo/Borland Pascal
Пожалуйста, объясните различия между компиляторами Pascal ABC.Net и Turbo/Borland Pascal

Нужно перевести код из Turbo Pascal в Pascal ABC.NET
Доброго времени суток. На форуме находил похожие темы, но к сожалению так и не смог разобраться....

Нужно перевести программу с Turbo Pascal в Pascal ABC.NET
Вот есть программный код , но он для турбо паскаля, помогите перевести его в АБС.NET Program...

11
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
30.11.2009, 22:23 2
Ладно - я начну.
Первые три строки
Pascal
1
2
3
program sort;
uses crt;
const n=6;
переводятся так:
C++
1
const int n= 6;
Добавлено через 2 минуты
Вот эти три строки:
Pascal
1
2
3
clrscr;
randomize;
writeln('Матрица:');
переводятся так:
C++
1
2
srand( time() );
printf( "Матрица:\n" );
0
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
30.11.2009, 23:12 3
LeshkinMaloy,

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
#include <locale>
#include <iostream>
#include <algorithm>
#include <functional>
#include <limits>
 
#include <time.h>
 
template <typename T, const size_t Dimension>
void swap(T (&arr)[Dimension][Dimension], size_t N)
{
    T maximum = std::numeric_limits<T>::min();
    size_t row = 0;
    for (size_t i=0; i<Dimension; i++)
        if (arr[i][i] > maximum)        
            row = i, maximum = arr[i][i];
 
    if (row == N)
        return;
 
    T tmp[Dimension];
    std::copy(arr[row], arr[row] + Dimension, tmp);
    std::copy(arr[N], arr[N] + Dimension, arr[row]);
    std::copy(tmp, tmp + Dimension, arr[N]);
}
 
template <
    typename _E, typename _Tr, template <typename, typename> class O,
    typename T, const size_t Rows>
struct outer : public std::unary_function<const T (&)[Rows], void>
{
    // --------------------------------------------------------------------------------
    typedef std::unary_function<const T (&)[Rows], void> base_type;
    typedef typename base_type::argument_type argument_type;
    // --------------------------------------------------------------------------------
    
    outer(O<_E,_Tr>& os) : os_(os) {}
    void operator()(argument_type v) const
    {
        const _E sep[] = { _E('\t'), 0 };
        std::ostream_iterator<T,_E,_Tr> oi(os_, sep); 
        
        std::copy(&v[0], &v[0]+Rows, oi);
        os_ << std::endl;
    }
    O<_E,_Tr>& os_;
};
 
template <
    typename _E, typename _Tr, template <typename, typename> class O,
    typename T, const size_t Cols, const size_t Rows>
O<_E,_Tr>& operator << (O<_E,_Tr>& os, const T (&arr)[Cols][Rows])
{
    std::for_each(&arr[0], &arr[0]+Cols, outer<_E, _Tr, O, T, Rows>(os));
    return (os);
}
 
int main()
{
    setlocale(LC_ALL, "");
 
    const size_t N = 3;
    int arr[N][N];
 
    srand(static_cast<unsigned>(time(NULL)));
    std::generate_n(&arr[0][0], N*N, &rand);
    
    // номер переставляемой строки
    const size_t row = 1;
 
    std::cout << "До: " << std::endl;
    std::cout << arr << std::endl;
 
    swap(arr, row);
 
    std::cout << "После: " << std::endl;
    std::cout << arr << std::endl;
 
    return 0;
}
Вывод результата: http://codepad.org/iXEz4G50
0
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 20
02.12.2009, 10:57  [ТС] 4
А разве нельзя сделать попроще,чем вариант предложенный Rififi, просто мы даже большинство предложенных операторов не проходили
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
02.12.2009, 11:25 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
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
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <time.h>
 
int main(int argc, char* argv[])
{
   const int SIZE = 6;
   int arr[SIZE][SIZE] = {0};
   int max, maxIndex, buf, k;
 
   srand(time(NULL));
 
   cout << "Matritsa." << endl;
   for (int i = 0; i < SIZE; i++)
   {
      for (int j = 0; j < SIZE; j++)
      {
         arr[i][j] = rand() % 11;
         cout << setw(3) << arr[i][j];
      }
      cout << endl;
   }
 
   max = arr[0][0];
   maxIndex = 0;
   for (int i = 0; i < SIZE; i++)
   {
      if (arr[i][i] > max)
      {
         max = arr[i][i];
         maxIndex = i;
      }
   }
 
   cout << "Max element = " << max << " v stroke " << maxIndex << endl;
   do
   {
      cout << "Vvedite stroku dlya perestanovki ";
      cin >> k;
      if (k < 0 || k >= SIZE)
         cout << "Nepravil'noe znacheniye" << endl;
   }while (k < 0 || k >= SIZE);
 
   if (k != maxIndex)
   {
      for (int i = 0; i < SIZE; i++)
      {
         buf = arr[maxIndex][i];
         arr[maxIndex][i] = arr[k][i];
         arr[k][i] = buf;
      }
   }
 
   cout << "Izmenennaya matritsa." << endl;
   for (int i = 0; i < SIZE; i++)
   {
      for (int j = 0; j < SIZE; j++)
      {
         cout << setw(3) << arr[i][j];
      }
      cout << endl;
   }
 
   system("pause");
   return 0;
}
1
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 20
02.12.2009, 11:55  [ТС] 6
Цитата Сообщение от kazak Посмотреть сообщение
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
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <time.h>
 
int main(int argc, char* argv[])
{
   const int SIZE = 6;
   int arr[SIZE][SIZE] = {0};
   int max, maxIndex, buf, k;
 
   srand(time(NULL));
 
   cout << "Matritsa." << endl;
   for (int i = 0; i < SIZE; i++)
   {
      for (int j = 0; j < SIZE; j++)
      {
         arr[i][j] = rand() % 11;
         cout << setw(3) << arr[i][j];
      }
      cout << endl;
   }
 
   max = arr[0][0];
   maxIndex = 0;
   for (int i = 0; i < SIZE; i++)
   {
      if (arr[i][i] > max)
      {
         max = arr[i][i];
         maxIndex = i;
      }
   }
 
   cout << "Max element = " << max << " v stroke " << maxIndex << endl;
   do
   {
      cout << "Vvedite stroku dlya perestanovki ";
      cin >> k;
      if (k < 0 || k >= SIZE)
         cout << "Nepravil'noe znacheniye" << endl;
   }while (k < 0 || k >= SIZE);
 
   if (k != maxIndex)
   {
      for (int i = 0; i < SIZE; i++)
      {
         buf = arr[maxIndex][i];
         arr[maxIndex][i] = arr[k][i];
         arr[k][i] = buf;
      }
   }
 
   cout << "Izmenennaya matritsa." << endl;
   for (int i = 0; i < SIZE; i++)
   {
      for (int j = 0; j < SIZE; j++)
      {
         cout << setw(3) << arr[i][j];
      }
      cout << endl;
   }
 
   system("pause");
   return 0;
}
15 строка- see declaration of 'i'
56 - error C2374: 'i' : redefinition; multiple initialization
66 - fatal error C1004: unexpected end of file found
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
02.12.2009, 12:11 7
Что за компилятор?
0
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 20
02.12.2009, 18:30  [ТС] 8
Цитата Сообщение от kazak Посмотреть сообщение
Что за компилятор?
MS Visual C++6.0
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
02.12.2009, 20:54 9
Цитата Сообщение от LeshkinMaloy Посмотреть сообщение
MS Visual C++6.0
Выкинь. Если же всё-таки, то
Цитата Сообщение от Rififi Посмотреть сообщение
после всех инклудов добавь это:

#if defined (_MSC_VER) && _MSC_VER <= 1200
#define for if (false) ; else for
#endif
0
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 20
07.12.2009, 01:40  [ТС] 10
Цитата Сообщение от kazak Посмотреть сообщение
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
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <time.h>
 
int main(int argc, char* argv[])
{
   const int SIZE = 6;
   int arr[SIZE][SIZE] = {0};
   int max, maxIndex, buf, k;
 
   srand(time(NULL));
 
   cout << "Matritsa." << endl;
   for (int i = 0; i < SIZE; i++)
   {
      for (int j = 0; j < SIZE; j++)
      {
         arr[i][j] = rand() % 11;
         cout << setw(3) << arr[i][j];
      }
      cout << endl;
   }
 
   max = arr[0][0];
   maxIndex = 0;
   for (int i = 0; i < SIZE; i++)
   {
      if (arr[i][i] > max)
      {
         max = arr[i][i];
         maxIndex = i;
      }
   }
 
   cout << "Max element = " << max << " v stroke " << maxIndex << endl;
   do
   {
      cout << "Vvedite stroku dlya perestanovki ";
      cin >> k;
      if (k < 0 || k >= SIZE)
         cout << "Nepravil'noe znacheniye" << endl;
   }while (k < 0 || k >= SIZE);
 
   if (k != maxIndex)
   {
      for (int i = 0; i < SIZE; i++)
      {
         buf = arr[maxIndex][i];
         arr[maxIndex][i] = arr[k][i];
         arr[k][i] = buf;
      }
   }
 
   cout << "Izmenennaya matritsa." << endl;
   for (int i = 0; i < SIZE; i++)
   {
      for (int j = 0; j < SIZE; j++)
      {
         cout << setw(3) << arr[i][j];
      }
      cout << endl;
   }
 
   system("pause");
   return 0;
}
Программа не меняет местами строку на диагонали, вместо этого, к примеру,если выбираем строку 2 то она просто меняет местами 3 и 5 строку. Через несколько часов здавать,помогите кто-нибудь

Добавлено через 50 минут
вот! мозги кипят,аж сдавать с буквой "з" написал...
всё перепробывал,не хватает у меня навыков привести в порядок программу...хотя много нового подчерпнул за последнюю неделю благодаря Вам. Откликнитесь кто-нибудь?где ошибка? через несколько часов сдавать курсач
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
07.12.2009, 01:53 11
Что выложил, то и перевели
Попробуй так:
buf = arr[i][i];
arr[i][i] =arr[k][i];
arr[k][i] = buf;
1
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 20
07.12.2009, 02:37  [ТС] 12
я сам ступил! попросил превести программу на с++, Вы мне помогли спасибо огромное! а мне то надо было не просто строки переставить,а поменять заданную пользователем строку с элементами главной диагонали матрицы...ОООООО

Добавлено через 7 минут
Цитата Сообщение от kazak Посмотреть сообщение
Что выложил, то и перевели
Попробуй так:
buf = arr[i][i];
arr[i][i] =arr[k][i];
arr[k][i] = buf;
ООО! kazak! наиогромнейшее тебе Спасибо! Выручил! От души!
0
07.12.2009, 02:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2009, 02:37
Помогаю со студенческими работами здесь

Нужно перевести код с Pascal ABC на Turbo Pascal - рисование работающей мельницы
Вот код, он должен рисовать работающею мельницу. uses graphABC,crt; type point=record ...

Есть ли аналог модуля tpdate.tpu (Turbo Pascal) для Free Pascal
Внимание! Нужно срочно узнать название юнита для freepascal, который выполняет функции tpdate.tpu...

Список слов распечатать в алфавитном порядке. В Turbo Pascal или Pascal ABC
Дана непустая последовательность слов, в каждом из которых содержится от 1 до 6 заглавных латинских...

Из множества выбрать три различные точки по условию -из Turbo Pascal во Free Pascal
Даны 2 множества точек на плоскости. Выбрать три различные точки первого множества так, чтобы круг...


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

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