Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
LeshkinMaloy
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 20
#1

C Pascal на C++ - C++

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

ребята,а кто может перевести с Pascal на C++ эту программу - Двумерные массивы Жду ваших ответов

Добавлено через 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2009, 20:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос C Pascal на C++ (C++):

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

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

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

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

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

Можно как-то переделать код из Turbo Pascal чтобы он работал в pascal abc.net? - PascalABC.NET
Сделайте пожалуйста, я просто не вникаю uses Graph, Crt; var grDriver: integer; grMode: integer; ErrCode: integer; ...

11
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 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
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
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
LeshkinMaloy
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 20
02.12.2009, 10:57  [ТС] #4
А разве нельзя сделать попроще,чем вариант предложенный Rififi, просто мы даже большинство предложенных операторов не проходили
0
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
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
LeshkinMaloy
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
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
02.12.2009, 12:11 #7
Что за компилятор?
0
LeshkinMaloy
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 20
02.12.2009, 18:30  [ТС] #8
Цитата Сообщение от kazak Посмотреть сообщение
Что за компилятор?
MS Visual C++6.0
0
Somebody
2791 / 1602 / 147
Регистрация: 03.12.2007
Сообщений: 4,198
Завершенные тесты: 1
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
LeshkinMaloy
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
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
07.12.2009, 01:53 #11
Что выложил, то и перевели
Попробуй так:
buf = arr[i][i];
arr[i][i] =arr[k][i];
arr[k][i] = buf;
1
LeshkinMaloy
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2009, 02:37
Привет! Вот еще темы с ответами:

Необходимо перевести программу с Pascal ABC на free pascal - Free Pascal
var a, factorial:longint; const c:array of char= ('0','1'); var res:string; d:0..1; k, n, i:byte; begin ...

Переделайте, пожалуйста, программу из Turbo pascal в ABC pascal - Pascal ABC
Помогите, пожалуйста, перевести из PASCAL TURBO в PASCAL ABC Program ProgInt; Uses Crt, Graph; Var Punkt : Byte; Knopka :...

Перевести в код Pascal ABC из кода Pascal Delphi - Pascal ABC
Помогите перевести в код ABC а то с Delphi вообще не знаком. Задание было такое: Записать в файл последовательного доступа N...

Нужен Turbo pascal или Free pascal на русском - Pascal
Нужен Turbo pascal или Free pascal на русском языке, есть такой или нет? По книге обучаюсь по Turbo pascal, а установлен pascalABC, в книге...


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

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

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