Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.09.2010, 10:54
Новичок

Отправить личное сообщение для chemaks Посмотреть профиль Найти все сообщения от chemaks
 
Регистрация: 23.09.2010
Сообщений: 1

Помогите пожалуйста перевести код с С++ на Паскаль!
//---------------------------------------------------------------------------
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <math.h>


#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused



//---------------------------------------------------------------------------
int main()
{
char ch,
*FileBuffer,
**Words,
WordBuffer[1000];
int in,
out,
NumWords = 0,
FileLength;
void sort(char**, int),
booble(char**, int);

// Открываем файл
if ((in = open("laba1.txt",O_RDONLY)) == -1)
{
perror("Ошибка открытия файла!");
return 1;
}
//Определяем его длину
FileLength = filelength(in);

// Выделяем память для хранения файла
FileBuffer = new char [FileLength];

// Считывам файл в буфер
read(in,FileBuffer,FileLength);
close(in);

// Выделяем память для хранения слов
Words = new char* [FileLength];

// Считываем слова из буфера
while (sscanf(FileBuffer,"%s",WordBuffer) > 0)
{
Words[NumWords] = new char [strlen(WordBuffer) + 1];
strcpy(Words[NumWords++],WordBuffer);
FileBuffer = (strstr(FileBuffer,WordBuffer) + strlen(WordBuffer) + 1);
}


// Сортируем индексы
// sort(Words,NumWords);
booble(Words,NumWords);


// Записываем полученный файл

// Открываем файл
if ((out = open("out.txt",O_WRONLY | O_CREAT | O_TRUNC)) == -1)
{
perror("Ошибка открытия файла!");
return 1;
}
for (int i = 0; i < NumWords; i++)
{
write(out,Words[i],strlen(Words[i]));
write(out,"\n",strlen("\n"));
}
close(out);


delete [] FileBuffer;
for (int i = 0; i < NumWords; i++)
delete [] Words[i];
delete [] Words;

return 0;
}
//---------------------------------------------------------------------------
void sort(char** arr, int n)
{
int i,
j;
char* t;

for (i = 1; i < n; i++)
{
printf("%lf\%\r",double(i)/double(n)*100.0);
for (j = i - 1; j>= 0; j--)
if( strcmp(arr[j],arr[j+1]) > 0 )
{
t = new char[strlen(arr[j + 1]) + 1];
strcpy(t,arr[j + 1]);
arr[j + 1] = new char [strlen(arr[j]) + 1];
strcpy(arr[j + 1],arr[j]);
arr[j] = new char [strlen(t) + 1];
strcpy(arr[j],t);
delete [] t;
}
}
}
//---------------------------------------------------------------------------
void booble(char** arr, int n)
{
int i,
j;
char* t;

for(i = 0; i < n; i++)
{
for(j = 0; j < n - i -1; j++)
{
printf("%lf\%\r",double(i)/double(n)*100.0);
if( strcmp(arr[j],arr[j+1]) > 0 )
{

t = new char[strlen(arr[j + 1]) + 1];
strcpy(t,arr[j + 1]);
arr[j + 1] = new char [strlen(arr[j]) + 1];
strcpy(arr[j + 1],arr[j]);
arr[j] = new char [strlen(t) + 1];
strcpy(arr[j],t);
delete [] t;
}
}
}
}
//---------------------------------------------------------------------------
  #2  
Старый 23.09.2010, 14:16
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

Это не стоит переводить.
Надо просто написать на Паскале, используя его родные средства работы с файлами и строками.
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль помогите решить задачю)) гость Реализация, исходники, языки 1 25.02.2010 21:30
помогите пожалуйста с переводом из с++ в Паскаль flop Реализация, исходники, языки 0 09.05.2009 21:10
Помгите плс, просто прогу перевести в Классы, на борланд С++ гость Математические алгоритмы (другое) 3 25.04.2009 04:09
Перевести XYZ или L*a*b* в оптическую плотность. гость Обработка изображений, звук, графика 0 20.12.2008 16:21
Помогите пожалуйста переделать алогоритм Бойера-Мура. (Паскаль>Си) Бойер Сортировка и поиск 5 22.05.2008 15:22