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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2011, 09:33   #1
Form_13
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 107
По умолчанию Из Си на Паскаль

Вот исходники!

Код:
Program курсовая;

{$APPTYPE CONSOLE}

{$R *.res}

 uses
  System.SysUtils;

//односвязный список
 Type
  p=^elem;
  elem = record
         data:string;
         sled:p;
         end;

 Var ykaz:p;

 //процедура чтения файла в динамический список
 Procedure read;
  var next:p;
      F:textfile;
  begin
   Assign(F,'text.txt');
   Reset(F);
   next:=ykaz;                           //делаем временный указатель, для прохождения по списку
   while not EoF(F)  do                  //пока, не конец файла
    begin
     readln(F,next^.data);              //читаем строку в поле data
     new(next^.sled);                   //если всё хорошо, выделяем память под следущий элемент списка
     next:=next^.sled;                  //переходим на него (присваиваем его основному указателю)
    end;
   close(F);                            //прекращаем работу с файлом
  end;

 //процедура записи в файл из динамического массива
 Procedure write;
  var F:textfile;
      ykz,l:p;
  begin
   Assign(F,'text.txt');
   Rewrite(F);
   ykz:=ykaz;            //делаем временный указатель, для прохождения по списку
   while (ykz<>nil) do   //если текущий указатель имеет непустое значение, то..
    begin
     Writeln(F,ykz^.data);     //записываем в файл строку, и ..
     l:=ykz^.sled;
     dispose(ykz);       //уничтожаем текущий элемент списка
     ykz:=l;            //переходим на следущий указатель
    end;
   close(F);                  //закрываем файл.
  end;

begin
 new(ykaz);
 read;
 write;
end.
Вот перевёл я:

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

struct elem
{
	elem *next;
	char *data;
};

elem *ykaz;

 void read (void)
 {
	 elem *sled;
	 FILE *F;
	 int a;
	 sled=ykaz;
	 F=fopen("text.txt","r");
	 while (!feof(F))
	 {
		 char *s;
		 s="Хуясе!";
		 fgets((*sled).data,a,F); fgets(s,a,F);
		 (*sled).next=(elem *)malloc(sizeof(ykaz));
		 sled=(*sled).next;
	 }
	 fclose(F);
 }

 void write(void)
 {
	 FILE *F;
	 int a;
	 elem *sled,*l;
	 F=fopen("text.txt","w");
	 sled=ykaz;
	 while (sled!=NULL)
	 {
		 fwrite((*sled).data,sizeof((*sled).data),1,F);
		 l=(*sled).next;
		 free(sled);
		 sled=l; 
	 }
	 fclose(F);
 }

 int main()
{
   setlocale(0,"Rus");
   ykaz=(elem *)malloc(sizeof(ykaz));
   read;
   write;
   system("PAUSE");
   return 0;
}
Я знаю, что неправильно написал, просто не совсем понимаю эту идею на си. Вот прошу помочь, показать как надо и объяснить ошибки.

Последний раз редактировалось Form_13; 22.12.2011 в 11:48.
Form_13 вне форума Ответить с цитированием
Старый 22.12.2011, 11:01   #2
Form_13
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 107
По умолчанию

Не знаю в чём ошибка, по идее всё так сделал.

Последний раз редактировалось Form_13; 22.12.2011 в 11:48.
Form_13 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, Борланд Паскаль-в чем разница??? Vremya-Dengy Паскаль, Turbo Pascal, PascalABC.NET 13 31.05.2011 18:23
паскаль и турбо паскаль Евгения Игоревна Помощь студентам 6 05.05.2011 14:31
Паскаль fai Паскаль, Turbo Pascal, PascalABC.NET 1 03.04.2011 11:02