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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 04:00   #1
devildriver696
Новичок
Джуниор
 
Регистрация: 14.12.2012
Сообщений: 2
По умолчанию Перевод программы с Pascal на C++

Доброго времени суток! Проблема такая: знаю си из рук вон плохо, необходимо перевести полностью рабочую программу, начало положено но ошибок много, помогите пожалуйста!
Паскаль:
Код:
USES CRT;
CONST
SIZE_OF_MONTH: ARRAY [1..12] OF BYTE=
(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var
d0,d,
m0,m,
y0,y,
dmin,
dmax,
days: integer;

PROCEDURE InputDates (var d0,m0,y0,d,m,y: integer);

var
correctly: boolean;

PROCEDURE InpDate (text: string;
var d,m,y: integer);

const
YMIN=1900;
YMAX=2100;
BEGIN
repeat
write (text);
readln(d,m,y);
correctly:=(y>=YMIN) and (y<=YMAX) and (m>=1)
and (m<=12)   and (d>0);
if correctly then
if (m=2) and (d=29) and (y mod 4=0) then

else
correctly:=d<=Size_of_Month[m];
if not correctly then
writeln('ÂÍÈÌÀÍÈÅ! Îøèáêà â äàòå!');
until correctly
end;

BEGIN
repeat
InpDate(' Ââåäèòå äàòó ðîæäåíèÿ â ôîðìàòå ÄÄ ÌÌ ÃÃÃÃ: ',
d0,m0,y0);
InpDate(' Ââåäèòå òåêóùóþ äàòó â ôîðìàòå ÄÄ ÌÌ ÃÃÃÃ: ',
d,m,y);
correctly:=y>y0;
if not correctly and (y=y0) then
begin
correctly:=m>m0;
if not correctly and (m=m0) then
correctly:=d>d0;
end;
until correctly;
END;

PROCEDURE Get_numbers_of_days (d0,m0,y0,d,m,y: integer;
var days: integer);

PROCEDURE Variant2;

var
mm: integer;
BEGIN
mm:=m0;
while mm<m do
begin
days:=days+Size_of_Month[mm];
if (mm=2) and (m0 mod 4=0) then inc(days);
inc(mm);
end;
END;

PROCEDURE Variant3;

var mm,yy: integer;
BEGIN
mm:=m0+1;
while mm<=12 do
begin
days:=days+Size_of_Month[mm];
if (mm=2) and (y0 mod 4=0) then inc(days);
inc(mm);
end;
yy:=y0+1;
while yy<y do
begin
days:=days+365;
if yy mod 4=0 then inc(days);
inc(yy);
end;
mm:=1;
while mm<m do
begin
days:=days+Size_of_Month[mm];
if (y mod 4=0) and (mm=2) then inc(days);
inc(mm);
end;
END;

BEGIN
if (y=y0) and (m=m0) then
days:=d-d0;

begin
days:=d+Size_of_Month[m0]-d0;

if (y0 mod 4=0) and (m0=2) then inc(days);

if y=y0 then Variant2;

Variant3;

end;
END;

PROCEDURE FindMaxMin (var dmin,dmax: integer;
days: integer);

const
TF=2*3.1416/23.6884;
TE=2*3.1416/28.4261;
TI=2*3.1416/33.1638;
INTERVAL=30;
var
min,max,x:real;
i:integer;
BEGIN
max:=sin(days*TF)+sin(days*TE)+sin(days*TI);
min:=max;
dmin:=days;
dmax:=days;
for i:=0 to INTERVAL do
begin
                  x:=sin((days+i)*TF)+sin((days+i)*TE)+sin((days+i)*TI);
if x>max then
begin
max:=x;
dmax:=days+i;
end;
if x<min then
begin
min:=x;
dmin:=days+i;
end;
end;
END;

PROCEDURE WriteDates(dmin,dmax,days:integer);

PROCEDURE WriteDate(text:string;
dd:integer);
const
Names_of_Monthes:array[1..12] of string[5]=
('ÿíâ ','ôåâð','ìàðò','àïð ','ìàé ',
'èþíü','èþëü','àâã ','ñåíò','îêò ',
'íîÿá','äåê ');
var
d0,m0,y0,ddd:integer;
BEGIN {WriteDate};
d0:=d;
m0:=m;
y0:=y;
ddd:=days;
while ddd<>dd do
begin
inc(d0);
if (y0 mod 4<>0) and (d0>Size_of_Month[m0]) or
(y0 mod 4=0) and (d0=30) then
begin
d0:=1;
inc(m0);
if m0=13 then
begin
m0:=1;
inc(y0);
end;
end;
inc(ddd);
end;
             writeln(text,d0,'-',Names_of_Monthes[m0],'-',y0);
END;

var
longdays: longint;
BEGIN {WriteDates}
longdays:=days;
writeln('Ïðîøëî: ',longdays,' äíåé, ',longdays*24,
' ÷àñîâ, ',longdays*24*60,' ìèíóò, ',
longdays*24*360,' ñåêóíä.');
WriteDate('Íàèìåíåå áëàãîïðèÿòíûé äåíü:  ',dmin);
WriteDate('Íàèáîëåå áëàãîïðèÿòíûé äåíü:  ',dmax);
END; {WriteDates}
           {---------------------------------------------------}
BEGIN {ÃËÀÂÍÀß ÏÐÎÃÐÀÌÌÀ}
Writeln('______________________________');
Writeln('     Ïðîãðàììà ðàñ÷åòà áëàãîïðèÿòíûõ äíåé ');
Writeln('  Ââîä äàííûõ îñóùåñòâëÿéòå ÷åðåç ïðîáåë ');
Writeln('Îêîí÷àíèå ââîäà äàííûõ ïîäòâåðäèòå ñ ïîìîùüþ êëàâèøè ENTER');
InputDates(d0,m0,y0,d,m,y);
             Writeln('-----------------------------------------');
Get_numbers_of_days(d0,m0,y0,d,m,y,days);
FindMaxMin(dmin,dmax,days);
WriteDates(dmin,dmax,days);
END.
devildriver696 вне форума Ответить с цитированием
Старый 14.12.2012, 04:01   #2
devildriver696
Новичок
Джуниор
 
Регистрация: 14.12.2012
Сообщений: 2
По умолчанию

Си:
Код:
// kor1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string>
const
int SIZE_OF_MONTH [12] =
(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
int d0,d,
m0,m,
y0,y,
dmin,
dmax,
days;

void InputDates(int d0,int m0,int y0,int d,int m,int y){
correctly: bool;}

void InpDate(typedef text<char> string, int d,int m,int y){
	const YMIN=1900, YMAX=2100;
	do{
		cout<<text;
		cin>>d;
		cin>>m;
		cin>>y;
		correctly=(y>=YMIN) && (y<=YMAX) && (m>=1)
&& (m<=12)   && (d>0);
		if correctly
if ((m=2) && (d=29) && (y mod 4=0))
else
correctly=d<=Size_of_Month[m];
if not correctly
cout<<"ÂÍÈÌÀÍÈÅ! Îøèáêà â äàòå!"<<;};
while correctly;
}
{
	{ cout<<"Ââåäèòå äàòó ðîæäåíèÿ â ôîðìàòå ÄÄ ÌÌ ÃÃÃÃ:";
	   cin>>d0;
	   cin>>m0;
	   cin>>y0;
cout<<"Ââåäèòå òåêóùóþ äàòó â ôîðìàòå ÄÄ ÌÌ ÃÃÃÃ:";
	   cin>>d;
	   cin>>m;
	   cin>>y;
correctly=y>y0;
if (not correctly && (y=y0))
{ correctly=m>m0;
if (not correctly && (m=m0))
correctly=d>d0;
};
while correctly;
	};
}

void Get_numbers_of_days (int d0,int m0,int y0,int d,int m,int y){

	int days;};

void Variant2(){
	int mm{
		mm=m0;
while mm<m do
{
days:=days+Size_of_Month[mm];
if ((mm=2) && (m0 mod 4=0)) inc(days);
inc(mm);
	};
	};
}
void Variant3(){

int mm, int yy;
{ 
mm=m0+1;
while mm<=12 do 
{
days=days+Size_of_Month[mm];
if ((mm=2) && (y0 mod 4=0)) inc(days);
inc(mm);
};
yy=y0+1;
while yy<y do 
{
days=days+365;
if (yy mod 4=0) inc(days);
inc(yy);
};
mm=1;
while mm<m do
{
days=days+Size_of_Month[mm];
if ((y mod 4=0) && (mm=2)) inc(days);
inc(mm);
};
};
}

{
if ((y=y0) && (m=m0))
days=d-d0;
{
days=d+Size_of_Month[m0]-d0;

if ((y0 mod 4=0) && (m0=2)) inc(days);

if y=y0 then Variant2;

Variant3;

};
}

void FindMaxMin (int dmin, int dmax, int days){

const
TF=2*3.1416/23.6884; 
TE=2*3.1416/28.4261;  
TI=2*3.1416/33.1638;  
INTERVAL=30;   
int min, int max,int x, int i;
{
max=sin(days*TF)+sin(days*TE)+sin(days*TI);
min=max;
dmin=days;
dmax=days;
for i=0 to INTERVAL do
{
                  x=sin((days+i)*TF)+sin((days+i)*TE)+sin((days+i)*TI);
if x>max
{
max=x;
dmax=days+i;
}
if x<min 
{
min=x;
dmin=days+i;
};
};
}

void WriteDates(int dmin,int dmax,int days){};
void WriteDate(typedef text<char> string, int dd){
	

int main(int argc, char* argv[])
{
	

}
devildriver696 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод программы с Pascal на С++ vova287 Помощь студентам 0 05.02.2012 22:06
Перевод программы Pascal на С++ Каtерина Помощь студентам 2 01.02.2012 22:13
Перевод программы с Pascal в C++ !!! !! ProgFrog Помощь студентам 0 09.04.2011 14:21
Перевод программы с Pascal в C++ GoodSpirit Помощь студентам 4 19.05.2010 18:04