Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2008, 17:58   #1
Jondeer
Пользователь
 
Регистрация: 27.10.2007
Сообщений: 42
Радость Из С++ в Паскаль

Здравствуйте!!!! Помогите пожалуйста переписать программу из Turbo C++ в Паскаль! Сам не могу, с Паскалем дело не имел!!

КОД:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
typedef
float vect[100];
typedef
vect matr[100];

void vvod(vect A[],int* n,int* m,FILE *fin)
{
int i,j;
fscanf(fin,"%d%d\n",& *n,& *m);
for(i=0;i< *n;i++)
{
for(j=0;j< *m;j++)
fscanf(fin,"%f",&A[i][j]);
fscanf(fin,"\n");
}
}


float max(vect A[ ],int n,int m)
{
int i,j;
float max;
max=A[1][1];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(A[i][j]>max)
max=A[i][j];
return max;
}
float min(vect A[ ],int n,int m)
{
int i,j;
float min;
min=A[1][1];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(A[i][j]<min)
min=A[i][j];
return min;
}
void zamena(vect A[],int n,int m)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(A[i][j]>0)
A[i][j]=1;
else
if(A[i][j]<0)
A[i][j]=0;
}
void vlolvod(vect A[],int n,int m,FILE *fout)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
fprintf(fout,"%5.2f",A[i][j]);
fprintf(fout,"\n");
}
}
void main()
{
matr A;
float minz,maxz,P;
int n,m;
FILE *in,*out;
in=fopen("C:\\in.txt","r");
out=fopen("C:\\out.txt","w");



fscanf(in,"%f",&P);
vvod(A,&n,&m,in);
maxz=max(A,n,m);
minz=min(A,n,m);
if(maxz-minz>P)
{
zamena(A,n,m);
fprintf(out,"Matriza izmenena\n");
vlolvod(A,n,m,out);
}
else
fprintf(out,"raznost' ne privlolshaet P!");
fclose(out);
fclose(in);
}
Jondeer вне форума Ответить с цитированием
Старый 06.06.2008, 00:58   #2
Mokriy
Пользователь
 
Регистрация: 14.05.2008
Сообщений: 14
По умолчанию

кинь лутше ещо условие самой проги может проще будет напрямую реалиовать через паскаль чем переделывать
Mokriy вне форума Ответить с цитированием
Старый 06.06.2008, 20:17   #3
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Почти дословный перевод
Код:
{$N+}
type vect=array [0..99] of single;
     matr=array [0..99] of vect;

procedure vvod(var a:matr; n,m:integer; var fin:text);
{Не очень понятно, зачем в варианте на C передавались указатели *n и *m}
var i,j:integer;
begin
readln(fin,n,m);
for i:=0 to n-1 do begin
    for j:=0 to m-1 do
        read(fin,a[i,j]);
    readln(fin);
    end;
end;

function max(const a:matr; n,m:integer):single;
var i,j:integer;
    maxx:single;
begin
maxx:=a[1,1];
for i:=0 to n-1 do
    for j:=0 to m-1 do
        if a[i,j]>maxx then maxx:=a[i,j];
max:=maxx;
end;

function min(const a:matr; n,m:integer):single;
var i,j:integer;
    minn:single;
begin
minn:=a[1,1];
for i:=0 to n-1 do
    for j:=0 to m-1 do
        if a[i,j]<minn then minn:=a[i,j];
min:=minn;
end;

procedure zamena(var a:matr; n,m:integer);
var i,j:integer;
begin
for i:=0 to n-1 do
    for j:=0 to m-1 do
        if a[i,j]>0 then a[i,j]:=1
        else {if a[i,j]<0 then} a[i,j]:=0; {вроде if не нужен}
end;

procedure vlolvod(const a:matr; n,m:integer; var fout:text);
var i,j:integer;
begin
for i:=0 to n-1 do begin
    for j:=0 to m-1 do
        write(fout,a[i,j]:5:2);
    writeln(fout);
    end;
end;

var a:matr;
    minz,maxz,p:single;
    n,m:integer;
    fin,fout:text; {in - зарезервированное слово}
begin
assign(fin,'c:\in.txt'); reset(fin);
assign(fout,'c:\out.txt'); rewrite(fout);
read(fin,p);
vvod(a,n,m,fin);
maxz:=max(a,n,m);
minz:=min(a,n,m);
if maxz-minz>P then begin
   zamena(a,n,m);
   writeln(fout,'Matriza izmenena');
   vlolvod(a,n,m,fout);
   end
   else write(fout,'raznost'' ne privlolshaet P!');
   {:-D   Ы обычно пишется игреком}
close(fout);
close(fin);
end.
Somebody вне форума Ответить с цитированием
Старый 10.06.2008, 12:55   #4
Jondeer
Пользователь
 
Регистрация: 27.10.2007
Сообщений: 42
По умолчанию

Спасибооо!
Jondeer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль... Need Help Chih Помощь студентам 4 30.05.2008 16:37
Паскаль. LLIypLLIyH Помощь студентам 2 30.05.2008 08:51
Паскаль Jondeer Помощь студентам 5 01.11.2007 16:56
Паскаль Jondeer Помощь студентам 4 27.10.2007 18:54