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

перевести с Паскаля на Visual C++

24.03.2010, 05:01. Показов 913. Ответов 1
Метки нет (Все метки)

помогите новичку перевсти с Паскаля на С++. Пожалуйста.
Само задание: "ПУсть дан файл целых чисел f. Определите, сколько раз в нем повторяется максимальное значение(за 1 проход)."

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
program pos;
type
mas=array[1..100] of integer;
 
procedure fileread(var f:text; var k:integer; var a:mas);
begin
assign(f,'input.txt');
reset(f);
k:=0;
while not eof(f) do begin
inc(k);
read(f,a[k]);
end;
end;
 
function MaxPos (a:mas; k:integer):integer;
var
max,n,i:integer;
begin
max:=-32768;
for i:=1 to k do
if a[i]>max then max:=a[i];
n:=0;
for i:=1 to k do
if a[i]=max then inc(n);
MaxPos:=n;
end;
 
var
f:text;
k:integer;
a:mas;
 
begin
assign(f,'input.txt');
reset(f);
fileread(f,k,a);
writeln(MaxPos(a,k));
readln
end.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2010, 05:01
Ответы с готовыми решениями:

Нужно перевести код Паскаля в Visual Basic
program for14; var i, N: integer; Pow: real; begin write('N = '); read(N); Pow := 0;...

Перевести из Паскаля в C#
1) *var* a:array of integer; i:integer; begin randomize; for i:=1 to 10 do a:=random(100)-40;...

Перевести с паскаля
program maximum; var a: array of integer; // массив масс предметов max: integer; // масса самого...

Перевести с Паскаля на С++
Перевести с Паскаля на С++ begin var n:= ReadInteger('Количество элементов...

1
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
24.03.2010, 06:48 2
Лучший ответ Сообщение было отмечено Deakon как решение

Решение

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
#incklude <iostream>
#include <fstream>
void fileread(std::ifstream &f, int &k; int *&a)
{
 if (a)
 {
  delete [] a;
  a=NULL;
 }
 f.open("input.txt");
 for (k=0; !eof(f); ++k);
 {
  a=(int *)reaaloc((void *)a,k+1);
  f>>a[k];
 }
}
int MaxPos (int *a; int k)
{
 int max,n,i;
 for (max=a[0], i=0, i<=k, ++i)
 { 
  if (a[i]>max)
  {
   max=a[i];
  }
 }
 for (i=0, n=0; i<=k;  ++i)
 {
  if (a[i]==max)
  {
   ++n;
  }
 }
 return n;
}
int mian ()
{
 std::ifstream f;
 int k;
 int *a=NULL;
 f.open('input.txt');
 fileread(f,k,a);
 cout<<MaxPos(a,k);
 return 0;
}
Где ты у себя увидел один проход? И нафига ты дважды открываешь родин файл ? Почему не закрываешь? Твоя задача и на пасе выглядит иначе:
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
program pos;
type
mas=array[1..100] of integer;
 
procedure fileread(var f:text; var k:integer; var a:mas);
begin
assign(f,'input.txt');
reset(f);
k:=0;
while not eof(f) do begin
inc(k);
read(f,a[k]);
end;
close(f);
end;
 
function MaxPos (a:mas; k:integer):integer;
var
max,n,i:integer;
begin
max:=-32768;
n:=0;
for i:=1 to k do
begin
if a[i]>max then
begin
max:=a[i];
n:=0;
end;
if a[i]=max then inc(n);
end;
MaxPos:=n;
end;
var
f:text;
k:integer;
a:mas;
 
begin
fileread(f,k,a);
writeln(MaxPos(a,k));
readln
end.
Тогда:
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
#incklude <iostream>
#include <fstream>
void fileread(std::ifstream &f, int &k; int *&a)
{
 if (a)
 {
  delete [] a;
  a=NULL;
 }
 f.open("input.txt");
 for (k=0; !eof(f); ++k);
 {
  a=(int *)reaaloc((void *)a,k+1);
  f>>a[k];
 }
}
int MaxPos (int *a; int k)
{
 int max,n,i;
 for (max=a[0], n=0, i=0, i<=k, ++i)
 { 
  if (a[i]>max)
  {
   max=a[i];
   n=0;
  }
  if (a[i]==max)
  {
   ++n;
  }
 }
 return n;
}
int mian ()
{
 std::ifstream f;
 int k;
 int *a=NULL;
 fileread(f,k,a);
 cout<<MaxPos(a,k);
 return 0;
}
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
#incklude <iostream>
#include <fstream>
void fileread(std::ifstream &f, int &k; int *&a)
{
 if (a)
 {
  delete [] a;
  a=NULL;
 }
 f.open("input.txt");
 for (k=0; !eof(f); ++k);
 {
  a=(int *)reaaloc((void *)a,k+1);
  f>>a[k];
 }
}
int MaxPos (int *a; int k)
{
 int max,n,i;
 for (max=a[0], i=0, i<=k, ++i)
 { 
  if (a[i]>max)
  {
   max=a[i];
  }
 }
 for (i=0, n=0; i<=k;  ++i)
 {
  if (a[i]==max)
  {
   ++n;
  }
 }
 return n;
}
int mian ()
{
 std::ifstream f;
 int k;
 int *a=NULL;
 f.open('input.txt');
 fileread(f,k,a);
 cout<<MaxPos(a,k);
 return 0;
}
Где ты у себя увидел один проход? И нафига ты дважды открываешь родин файл ? Почему не закрываешь? Твоя задача и на пасе выглядит иначе:
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
program pos;
type
mas=array[1..100] of integer;
 
procedure fileread(var f:text; var k:integer; var a:mas);
begin
assign(f,'input.txt');
reset(f);
k:=0;
while not eof(f) do begin
inc(k);
read(f,a[k]);
end;
close(f);
end;
 
function MaxPos (a:mas; k:integer):integer;
var
max,n,i:integer;
begin
max:=-32768;
n:=0;
for i:=1 to k do
begin
if a[i]>max then
begin
max:=a[i];
n:=0;
end;
if a[i]=max then inc(n);
end;
MaxPos:=n;
end;
var
f:text;
k:integer;
a:mas;
 
begin
fileread(f,k,a);
writeln(MaxPos(a,k));
readln
end.
Тогда:
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
#incklude <iostream>
#include <fstream>
void fileread(std::ifstream &f, int &k; int *&a)
{
 if (a)
 {
  delete [] a;
  a=NULL;
 }
 f.open("input.txt");
 for (k=0; !eof(f); ++k);
 {
  a=(int *)reaaloc((void *)a,k+1);
  f>>a[k];
 }
 f.close();
}
int MaxPos (int *a; int k)
{
 int max,n,i;
 for (max=a[0], n=0, i=0, i<=k, ++i)
 { 
  if (a[i]>max)
  {
   max=a[i];
   n=0;
  }
  if (a[i]==max)
  {
   ++n;
  }
 }
 return n;
}
int mian ()
{
 std::ifstream f;
 int k;
 int *a=NULL;
 fileread(f,k,a);
 cout<<MaxPos(a,k);
 return 0;
}
В следющий раз буду перводить только после того, как сам исправишь исходник.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2010, 06:48

перевести на c++ с паскаля
переведите пожалуйста как написать эти строчки на с++ for i:=1 to Length(s) do for...

Перевести с паскаля на Си++
вообщем программа на паскале нужно перевести на с++ суть проги поменять местами главную диагональ...

Перевести с паскаля на C++
помогите перевести с паскаля на C++ , очень надо.:) var n,i,j,k,l:longint; begin readln(n);...

Перевести с паскаля на си
Здравствуйте,помогите пожалуйста перевести с паскаля на си var s: string; i: byte; ...


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

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

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