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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2010, 14:50   #1
midletarket
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 20
По умолчанию Перевод программы с Pascal в Borland C++

Добрый день! Прошу помочь исправить.
Есть программа на Pascal, ее необходимо перевести в Borland C++.
Сам C++ знаю слабо, ошибки.
Код:
program StudObj;
uses CRT;
type
Stud=object
           Surname: string[20];
           Name: string[20];
           Patronymic: string[20];
           NameOfGroup: string[20];
           Mark1: byte;
           Mark2: byte;
           Mark3: byte;
           procedure Zeroing; 
           procedure Init(sur,nam,pat,nog:string; mar1, mar2, mar3: byte);
           
           procedure IntrData; 
           procedure OutData; 
           procedure Determ(var a:word); 
           function  Result:byte; 
end;
function  Stud.Result:byte;
          begin
               Result:=0;
               if ((Mark1<>3) and (Mark2<>3) and (Mark3<>3)) then
               Result:=trunc((Mark1+Mark2+Mark3)/3);
          end;
procedure Stud.Zeroing;
          begin
               Surname:='';
               Name:='';
               Patronymic:='';
               NameOfGroup:='';
               Mark1:=0;
               Mark2:=0;
               Mark3:=0;
          end;
procedure Stud.Init(sur,nam,pat,nog:string; mar1, mar2, mar3: byte);
          begin
               Surname:=sur;
               Name:=nam;
               Patronymic:=pat;
               NameOfGroup:=nog;
               Mark1:=mar1;
               Mark2:=mar2;
               Mark3:=mar3;
          end;
procedure Stud.IntrData;
var sur,nam,pat,nog:string; mar1, mar2, mar3: byte;
    begin
         writeln('Vvedite dannie o studente');
         write('Familiya',' '); readln(sur);
         write('Imya',' '); readln(nam);
         write('Otchestvo',' '); readln(pat);
         write('Nomer gruppi',' '); readln(nog);
         writeln('Vvedite Ocenki ot 3 do 5');
         write('Ocenka_1=',' '); readln(mar1);
         write('Ocenka_2=',' '); readln(mar2);
         write('Ocenka_3=',' '); readln(mar3);
         Init(sur,nam,pat,nog, mar1, mar2, mar3);
    end;
procedure Stud.OutData;
          begin
               write('Familiya',' '); writeln(Surname);
               write('Imya',' '); writeln(Name);
               write('Otchestvo',' '); writeln(Patronymic);
               write('Nomer gruppi',' '); writeln(NameOfGroup);
               write('Ocenka_1=',' '); writeln(Mark1);
               write('Ocenka_2=',' '); writeln(Mark2);
               write('Ocenka_3=',' '); writeln(Mark3);
          end;
procedure Stud.Determ;
          begin
               a:=0;
               case Result of
                    0: begin a:=0;
                    writeln('stipendiya ne mozhet byt poluchena'); end;
                    4: a:=1100;
                    5: a:=2170;
                    else a:=0;
               end;
               write('stipendiya ravna=',' '); writeln(a);
          end;

var student:stud; a:word;

BEGIN
     ClrScr;
     with student do
          begin
               Zeroing;
               IntrData;
               ClrScr;
               OutData;
               Determ(a);
          end;
END.
midletarket вне форума Ответить с цитированием
Старый 09.11.2010, 14:51   #2
midletarket
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 20
По умолчанию Borland C++

Код:
#include<iostream.h>
#include<stdio.h>
#include<comio.h>

class Stud
{	public:
	char Surname, Name, Patronymic, NameOfGroup [20];
	int Mark1, Mark2, Mark3;
	void Zeroing(void);
	void Init(char sur, nam, pat, nog [256]; int mar1, mar2, mar3);
	void IntrData(void);
	void OutData(void);
	void Determ(int a);
	int Result(void);
}
inline void Stud::Init(char sur, nam, pat, nog [256]; int mar1, mar2, mar3)
{ 	Surname=sur;
	Name=nam;
	Patronymic=pat;
	NameOfGroup=nog;
	Mark1=mar1;
	Mark2=mar2;
	Mark3=mar3;
}
int Stud::Result(void)
{
result = 0;
if (Mark1!=3 && Mark2 !=3 && Mark3 !=3) return int((Mark1+ Mark2+Mark3)/3);
} 
void Stud::Zeroing(void)
{	Surname=' ';
        Name='';
        Patronymic='';
        NameOfGroup='';
        Mark1=0;
        Mark2=0;
        Mark3=0;
}
void Stud::OutData;
{
cout <<"Familiya"," "; 	        
        cout << Surname;								
cout <<"Imya"," "; 	        
        cout << Name;

cout <<"Otchestvo"," "; 	        
        cout << Patronymic;

cout <<"Nomer gruppi"," "; 	        
        cout << NameOfGroup;
cout <<"Ocenka_1="," "; 	        
        cout << Mark1;
cout <<"Ocenka_2="," "; 	        
        cout << Mark2;
cout <<"Ocenka_3="," "; 	        
        cout << Mark3;
}
void Stud::IntrData;
{
printf("Vvedite dannie o studente");
cout <<"Familiya"," "; 	        
        cin >> sur;								
cout <<"Imya"," "; 	        
        cin >> nam;

cout <<"Otchestvo"," "; 	        
        cin >> pat;

cout <<"Nomer gruppi"," "; 	        
        cin >> nog;
printf("Vvedite Ocenki ot 3 do 5");
cout <<"Ocenka_1="," "; 	        
        cin >> mar1;
cout <<"Ocenka_2="," "; 	        
        cin >> mar2;
cout <<"Ocenka_3="," "; 	        
        cin >> mar3;
}
void Stud::Determ(int a)
{
a=0; 				
switch (Result)  {
 case 0: { a=0; cout <<''stipendiya ne mozhet byt poluchena''}; break;
 case 4: a=1100; break;
 case 5: a=2170; break;
 default: a=0;
};
}
void main();
char a [256];

{
clrscr()
Stud Student;
Student.Zeroing;
Student.IntrData;
clrscr();
Student.OutData;
Student.Determ(int a);
getch();
return;}
midletarket вне форума Ответить с цитированием
Старый 09.11.2010, 16:37   #3
midletarket
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 20
По умолчанию

Выручите пожалуйста, половина дела сделана ведь.
midletarket вне форума Ответить с цитированием
Старый 09.11.2010, 18:39   #4
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Ух! ошибка на ошибке
Не вникая в суть задания, синтаксические ошибки можно исправить так:
Код:
#include <conio.h>
Код:
class Stud
{	public:

	char* Surname, *Name, *Patronymic, *NameOfGroup ;
             

             //============
             void Init(char* sur, char* nam, char* pat, char* nog, int mar1, int mar2, int mar3);
};
1)У каждого параметра в функции должен быть указан тип.
2) в описании параметров функции ; не ставится
3) после объявл
класса ставится ;

char* лучше заменить на string, но это уже по желанию

Далее
Код:
void Stud::Zeroing(void)
{	Surname='"";
    //===============
}
двоойные кавычки, т.к работаем со строкамиения
Далее в
Код:
void Stud::IntrData;
{
printf("Vvedite dannie o studente");
cout <<"Familiya"," "; 	        
        cin >> sur;
//==========
}
Компилятор не знает, что такое sur и иже с ними, замени на имена полей класса.
В
Код:
void Stud::Determ(int a)
{
a=0; 				
switch (Result)  {
//========
}
Непонятно, что ты хотел тут сделать, но Result - это функция, поэтому
Код:
switch (Result()) {
//====
}
В той же функции неверно поставлены скобки надо
Код:
case 0: { a=0; cout <<"stipendiya ne mozhet byt poluchena"; break;}
В main() нетуда объявление переменной впихнул и пропустил ; после clrscr();
Код:
int main()

{
char a [256];

clrscr();
Stud Student;
//======
}
Вызывая методы класса, даже с аргументом типа void скобки ставятся
Код:
Student.Zeroing();
Student.IntrData();
Student.OutData();
Переменную b надо объявить, а потом уже передавть в функцию
Код:
int b;
Student.Determ(b);
Ух! Кажется все
Единственный способ стать умнее - играть с более умным противником.

Последний раз редактировалось Sam Gold; 09.11.2010 в 19:04.
Sam Gold вне форума Ответить с цитированием
Старый 09.11.2010, 19:19   #5
midletarket
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 20
По умолчанию

Огромное спасибо,только вот теперь буквально чуть-чуть осталось вопросов.
Цитата:
3) после объявл
класса ставится ;
Не понял куда поставить.
Цитата:
char* лучше заменить на string, но это уже по желанию
* нужно убрать, верно?
Цитата:
Компилятор не знает, что такое sur и иже с ними, замени на имена полей класса.
Тогда что здесь делать с процедурой инициализации?
midletarket вне форума Ответить с цитированием
Старый 09.11.2010, 20:08   #6
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

После объявления класса
Код:
class Stud
{	public:
	char Surname, Name, Patronymic, NameOfGroup [20];
	int Mark1, Mark2, Mark3;
	void Zeroing(void);
	void Init(char sur, nam, pat, nog [256]; int mar1, mar2, mar3);
	void IntrData(void);
	void OutData(void);
	void Determ(int a);
	int Result(void);
} ;//=====здесь ставится ;
Про string
Цитата:
char* лучше заменить на string, но это уже по желанию

* нужно убрать, верно?
Нет, я имел в виде использовать <string>
Код:
#include <string>
class Stud{
//======
public:

	string Surname, Name, Patronymic, NameOfGroup ;
             

             //============
             void Init(string sur, string nam, string pat, string nog, int mar1, int mar2, int mar3);
//=========и т.д во всех функциях char*  заменяем на string
};
Просто удобнее работать со string, чем с char*.
Цитата:
Тогда что здесь делать с процедурой инициализации?
Функцию инициализации(если я правильно понял это Init(/* параметры*/) оставить прежней. Туда ты передаешь переменные sur, nam и т.д. и инициализируешь ими поля класса Surname, Name и т.д. переменные sur, nam видимы для компилятора только внутри этой функции, а поля данного класса доступны всем методам этого класса, поэтому в void Stud::IntrData()
Код:
void Stud::IntrData()
{
printf("Vvedite dannie o studente");
cout <<"Familiya"<<" "; //=запятую замени на <<	        
        cin >> Surname;								
cout <<"Imya"<<" "; 	        
        cin >>Name;
//======== и т.д.
}
Да и если уж используешь cin и cout, то зачем printf()?
Единственный способ стать умнее - играть с более умным противником.

Последний раз редактировалось Sam Gold; 09.11.2010 в 20:12.
Sam Gold вне форума Ответить с цитированием
Старый 09.11.2010, 21:00   #7
midletarket
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 20
По умолчанию

Вот исправил, только пишет что 6 ошибок.
Код:
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>

class Stud
{	public:
	string Surname,  Name,  Patronymic,  NameOfGroup;
	int Mark1, Mark2, Mark3;
	void Zeroing(void);
	void Init(String sur, String nam, String pat, String nog,
	 int mar1, int mar2, int mar3);
	void IntrData(void);
	void OutData(void);
	void Determ(int a);
	int Result(void);
};
inline void Stud::Init(string sur, string nam, string pat, string nog, int mar1, int mar2, int mar3)
{ 	Surname=sur;
	Name=nam;
	Patronymic=pat;
	NameOfGroup=nog;
	Mark1=mar1;
	Mark2=mar2;
	Mark3=mar3;
}
int Stud::Result(void)
{
result = 0;
if (Mark1!=3 && Mark2 !=3 && Mark3 !=3) return int((Mark1+ Mark2+Mark3)/3);
}
void Stud::Zeroing(void)
{	Surname="";
	Name="";
	Patronymic="";
	NameOfGroup="";
	Mark1=0;
	Mark2=0;
	Mark3=0;
}
void Stud::OutData
{
cout <<"Familiya"," ";
	cout << Surname;
cout <<"Imya"," ";
	cout << Name;

cout <<"Otchestvo"," ";
	cout << Patronymic;

cout <<"Nomer gruppi"," ";
	cout << NameOfGroup;
cout <<"Ocenka_1="," ";
	cout << Mark1;
cout <<"Ocenka_2="," ";
	cout << Mark2;
cout <<"Ocenka_3="," ";
	cout << Mark3;
}
void Stud::IntrData
{
printf("Vvedite dannie o studente");
cout <<"Familiya"<<" ";
	cin >> Surname;
cout <<"Imya"<<" ";
	cin >> Name;

cout <<"Otchestvo"<<" ";
        cin >> Patronymic;

cout <<"Nomer gruppi"<<" "; 	        
        cin >> NameOfGroup;
printf("Vvedite Ocenki ot 3 do 5");
cout <<"Ocenka_1="<<" "; 	        
        cin >> Mark1;
cout <<"Ocenka_2="<<" "; 	        
        cin >> Mark2;
cout <<"Ocenka_3="<<" "; 	        
        cin >> Mark3;
}
void Stud::Determ(int a)
{
a=0; 				
switch (Result())  {
 case 0: { a=0; cout <<"stipendiya ne mozhet byt poluchena"}; break;
 case 4: a=1100; break;
 case 5: a=2170; break;
 default: a=0;
};
}
int main()


{
clrscr()
Stud Student;
Student.Zeroing();
Student.IntrData();
clrscr();
Student.OutData();
int a;
Student.Determ(a);
getch();
return;}
cpp 8 -
Код:
string Surname,
Type name expected;
cpp 8 -
Код:
string Surname,
Declarations missing;
cpp 11 -
Код:
void Init(String sur,
'string' cannot start a parameter declarations
cpp 11 -
Код:
void Init(String sur, String nam,
) expected
cpp 18 -
Код:
inline void Stud::Init(string
'string' cannot start a parameter declarations
cpp 18 -
Код:
inline void Stud::Init(string sur, string nam,
) expected
midletarket вне форума Ответить с цитированием
Старый 09.11.2010, 21:21   #8
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

string для инклуднника <string>с маленькой буквы ппишется, С++ чувствителен к регистру
Код:
void Stud::OutData()
Ты скобки забыл поставить
Аналогичная ошибка в
Код:
void Stud::IntrData()
Дальше
Код:
case 0: { a=0; cout <<"stipendiya ne mozhet byt poluchena";} break;
Опять скобки не туда поставил. скобки после ; ставятся.
Код:
clrscr();
; пропущена
и из main() надо бы что-нибудь возвращать
Код:
return 0;
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 09.11.2010, 21:52   #9
midletarket
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 20
По умолчанию

Чем больше исправляю, тем больше появляется ошибок, то он (С++) присвоить не может, то тип несоответствует. Помогите пожалуйста отладить.
midletarket вне форума Ответить с цитированием
Старый 09.11.2010, 21:59   #10
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Вот держи
Код:
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string>

class Stud
{	public:
	string Surname,  Name,  Patronymic,  NameOfGroup;
	int Mark1, Mark2, Mark3;
	void Zeroing(void);
	void Init(string sur, string nam, string pat, string nog,
	 int mar1, int mar2, int mar3);
	void IntrData(void);
	void OutData(void);
	void Determ(int a);
	int Result(void);
};
inline void Stud::Init(string sur, string nam, string pat, string nog, int mar1, int mar2, int mar3)
{ 	Surname=sur;
	Name=nam;
	Patronymic=pat;
	NameOfGroup=nog;
	Mark1=mar1;
	Mark2=mar2;
	Mark3=mar3;
}
int Stud::Result(void)
{

if (Mark1!=3 && Mark2 !=3 && Mark3 !=3) return int((Mark1+ Mark2+Mark3)/3);
else return 0;
}
void Stud::Zeroing(void)
{	Surname="";
	Name="";
	Patronymic="";
	NameOfGroup="";
	Mark1=0;
	Mark2=0;
	Mark3=0;
}
void Stud::OutData()
{
cout <<"Familiya"," ";
	cout << Surname;
cout <<"Imya"," ";
	cout << Name;

cout <<"Otchestvo"," ";
	cout << Patronymic;

cout <<"Nomer gruppi"," ";
	cout << NameOfGroup;
cout <<"Ocenka_1="," ";
	cout << Mark1;
cout <<"Ocenka_2="," ";
	cout << Mark2;
cout <<"Ocenka_3="," ";
	cout << Mark3;
}
void Stud::IntrData()
{
printf("Vvedite dannie o studente \n");
cout <<"Familiya"<<" ";
	cin >> Surname;
cout <<"Imya"<<" ";
	cin >> Name;

cout <<"Otchestvo"<<" ";
        cin >> Patronymic;

cout <<"Nomer gruppi"<<" "; 	        
        cin >> NameOfGroup;
printf("Vvedite Ocenki ot 3 do 5 \n");
cout <<"Ocenka_1="<<" "; 	        
        cin >> Mark1;
cout <<"Ocenka_2="<<" "; 	        
        cin >> Mark2;
cout <<"Ocenka_3="<<" "; 	        
        cin >> Mark3;
}
void Stud::Determ(int a)
{
a=0; 				
switch (Result() )  {
 case 0: { a=0; cout <<"\n stipendiya ne mozhet byt poluchena "<<endl;} break;
 case 4: a=1100; break;
 case 5: a=2170; break;
 default: a=0;
}
}
int main()
{
clrscr();
Stud Student;
Student.Zeroing();
Student.IntrData();
clrscr();
Student.OutData();
int a=5;
Student.Determ(a);
getch();
return 0;
}
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод программы с Pascal в C++ GoodSpirit Помощь студентам 4 19.05.2010 18:04
Перевод кода из Pascal в Object Pascal zemskov77 Общие вопросы Delphi 1 03.01.2009 09:37