Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Помогите перевести с pascal -> C |

24.06.2009, 21:05
|
|
Новичок
Регистрация: 05.03.2008
Сообщений: 11
Провел на форуме: 46977
Репутация:
1
|
|
Помогите перевести с pascal -> C
Здрасте! У меня такая вот проблема, надо сдать лабу.
Она у меня написана на паскале, мне надо перевести ее на сишку.
вот кол: (программа проверка орфографии)
Uses CRT;
Const NameDict = 'dict.slo';
Max = 100;
Var Word1, Word2 : String[30];
FileDict : Text;
M : Array [1..Max] Of String[30];
I,L : Word;
Eq : Boolean;
Function NonEqualLength(S1, S2 : String) : Boolean;
Var I : Word;
F,R : Boolean;
Begin
F := True;
{ begin }
While F Do
Begin
If (S1[1] = S2[1])
Then
Begin
Delete(S1, 1, 1);
Delete(S2, 1, 1);
End
Else F := False;
End;
F := True;
{ end }
While F Do
Begin
If (S1[Length(S1)] = S2[Length(S2)])
Then
Begin
Delete(S1, Length(S1), 1);
Delete(S2, Length(S2), 1);
End
Else F := False;
End;
If (Length(S1) = 0) OR (Length(S2) = 0)
Then R := True
Else R := False;
NonEqualLength := R;
End;
Function EqualLength(S1, S2 : String) : Boolean;
Var F : Boolean;
I, R, Error1, Error2 : Word;
Begin
R := 0;
For I := 1 To Length(S1) Do
Begin
If S1[I] <> S2[I] Then
Begin
R := R + 1;
If R = 1 Then Error1 := I;
If R = 2 Then Error2 := I;
End;
End;
F := False;
If R = 0
Then F := True;
If R = 1
Then F := True;
If ( (R = 2) and (S1[Error1] = S2[Error2]) and (S1[Error2] = S2[Error1]) )
Then F := True;
EqualLength := F;
End;
Function UpperCaseRus(RusChar : Char) : Char;
Begin
Case RusChar Of
'*'..'Ї': UpperCaseRus := Chr(Ord(RusChar)-32);
'а'..'п': UpperCaseRus := Chr(Ord(RusChar)-80);
'с' : UpperCaseRus := 'р';
Else UpperCaseRus := UpCase(RusChar);
End;
End;
Function UpString(S : String) : String;
Var I : Byte;
NewString : String;
Begin
NewString:='';
For I:=1 To Length(S) Do NewString := NewString + UpperCaseRus(S[I]);
UpString:=NewString;
End;
Procedure Orphography (W1, W2 : String);
Var F : Boolean;
Begin
F := False;
If (Length(W1) = Length(W2))
Then F := EqualLength (W1, W2);
If ( Abs(Length(W1)-Length(W2)) = 1)
Then F := NonEqualLength (W1, W2);
If (F)
Then
Begin
M[L] := W1;
Inc(L);
End;
End;
Begin
ClrScr;
For I := 1 To Max Do M[I] := '';
L := 1;
Write('‚ўҐ¤ЁвҐ б«®ў® ¤«п Їа®ўҐаЄЁ: ');
ReadLn(Word2);
Word2 := UpString(Word2);
Eq := True;
Assign (FileDict, NameDict);
Reset (FileDict);
While ( Not(EOF(FileDict)) and Eq) Do
Begin
ReadLn(FileDict, Word1);
Word1 := UpString(Word1);
If Word1 = Word2 Then Eq := False;
Orphography (Word1, Word2);
End;
Close (FileDict);
If Not(Eq)
Then
WriteLn ('Ћв«Ёз*®! ’*Є®Ґ б«®ў® Ґбвм ў б«®ў*аҐ!')
Else
If L <> 1
Then
Begin
WriteLn ('‚®§¬®¦*® б«®ў® **ЇЁб**® *Ґ ўҐа*®.');
WriteLn ('‚*аЁ**вл §*¬Ґ*л: ');
For I := 1 To L Do Write(M[I], ' ');
WriteLn;
End;
{ Else WriteLn ('ЌҐЁ§ўҐбв*®Ґ б«®ў®. ?§ўЁ*ЁвҐ.');
}
WriteLn('... **¦¬ЁвҐ Є«*ўЁиг ...');
ReadLn;
End.
|
|
|

24.06.2009, 21:17
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Жесть ребятки пошли. Ты бы хоть "пожалуйста", что ли написал...
|
|
|

24.06.2009, 21:27
|
|
Новичок
Регистрация: 05.03.2008
Сообщений: 11
Провел на форуме: 46977
Репутация:
1
|
|
Пожалуйста, ну очень надо, если завтра не сдам то мне крантЫ
Плиз помогите
|
|
|

24.06.2009, 22:25
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Код:
#define NameDict 'dict.slo'
#define Max 100
char Word1[30], Word2[30];
FILE* FileDict;
char M[Max][30];
int I, L;
bool Eq;
bool NonEqualLength(char* S1, char* S2) {
bool F,R;
F = True;
While (F) {
If (S1[1] == S2[1]) {
//Delete(S1, 1, 1); ??
//Delete(S2, 1, 1); ??
}
Else F = False;
}
F = True;
While (F) {
If (S1[strlen(S1)] == S2[strlen(S2)]) {
//Delete(S1, Length(S1), 1); ??
//Delete(S2, Length(S2), 1); ??
}
Else F = False;
}
If (strlen(S1) == 0) || (strlen(S2) == 0)
R = True
Else R = False;
NonEqualLength = R;
}
bool EqualLength(char* S1, char* S2 ) {
bool F;
int I, R=0, Error1, Error2;
For (I = 0; i<strlen(S1); i++) {
If (S1[I] != S2[I]) {
If ++R = 1 Error1 = I;
If ++R = 2 Error2 = I; // Жеееесть, а не алгоритм ))
}
}
F = False;
If (R == 0)
F = True;
// do you know what is 'case'? )
If (R == 1)
F = True;
If ( (R == 2) && (S1[Error1] == S2[Error2]) && (S1[Error2] == S2[Error1]) )
F = True;
EqualLength = F;
}
char UpperCaseRus(char RusChar) {
switch(RusChar) {
case '*'..'Ї': UpperCaseRus = //Chr(Ord(RusChar)-32);
case 'а'..'п': UpperCaseRus = //Chr(Ord(RusChar)-80);
case 'с' : UpperCaseRus = 'р';
default: UpperCaseRus = UpCase(RusChar);
}
}
char* UpString(char* S) {
char* NewString;
NewString='';
For (int I=0; I<strlen(S); I++)
NewString += UpperCaseRus(S[I]);
UpString = NewString;
}
void Orphography (char* W1, char* W2) {
bool F=False;
If (strlen(W1) == strlen(W2))
F = EqualLength (W1, W2);
If (Abs(strlen(W1)-strlen(W2)) ==1)
F = NonEqualLength (W1, W2);
If (F)
M[L++] = W1;
}
void main() {
For (I = 0; I < Max; I++) M[I] = '';
L = 1;
printf("‚ўҐ¤ЁвҐ б«®ў® ¤«п Їа®ўҐаЄЁ: ");
scanf("%s", Word2);
Word2 = UpString(Word2);
Eq = True;
int c;
if((FileDict = fopen(NameDict, "r")) { // read, write xz
while ((c=fgec(FileDict))!=EOF) {
fscanf(FileDictm "%s", &Word1)'
Word1 = UpString(Word1);
If (Word1==Word2) Eq=Flase;
Orphography (Word1, Word2);
}
fclose(FileDict);
}
If (!Eq)
WriteLn ('Ћв«Ёз*®! ’*Є®Ґ б«®ў® Ґбвм ў б«®ў*аҐ!');
Else {
If (L != 1) {
printf ("‚®§¬®¦*® б«®ў® **ЇЁб**® *Ґ ўҐа*®.");
printf ("‚*аЁ**вл §*¬Ґ*л: ");
For (I = 1; I < L; I++) printf(' %s', M[I]);
printf("\n");
}
Else printf("ЌҐЁ§ўҐбв*®Ґ б«®ў®. ?§ўЁ*ЁвҐ.");
}
printf("... **¦¬ЁвҐ Є«*ўЁиг ...");
}
Вот набросал. Врятли это будет компилиться, но этот код уже гораздо легче доработать, разумеется, если есть хоть какие-то знания в этой области.
Последний раз редактировалось Fata1ex; 25.06.2009 в 03:02..
|
|
|

26.06.2009, 20:04
|
|
Новичок
Регистрация: 05.03.2008
Сообщений: 11
Провел на форуме: 46977
Репутация:
1
|
|
спасибо агромное, +10, да вабщето знания в этой области есть, просто их больше в области пхп+скуль, кароче веб - моя стихия
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|