Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Конвертер из Паскаля в Си


Автор: TheBeginner 8.1.2015, 22:10
Дан файл написанный на Паскале в формате txt,программа должна его считывать и выводить на экран,а потом при нажатии кнопки конвертировать на язык Си и сохранять в другой файл.

Часть сам реализовал,часть нашёл в интернете.Но программа не работает(Она компилируется но не работает корректно
).
-Текст с файла в консоль не выводится
-Не конвертирует(пусть даже не все функции написал).

Надеюсь на ваши советы,помощь и подсказки

Код не вместился,залил отдельно.

12-ого надо показывать.

Автор: TheBeginner 9.1.2015, 12:20
Проблему с выводом содержимого файла в консоль решилась..

Осталась проблема с конвертацией

Немного подправил программу.

Осталось понять как мой file1.txt привязать к функции перевода с одного языка другой.

Автор: _zorn_ 9.1.2015, 12:27
Студенты... Конвертаторы им подавай. А зачем ?
Си не сложный язык, паскаль еще проще...

ЗЫ. Заодно поищи конвертатор строительных материалов в столы...

Автор: TheBeginner 9.1.2015, 12:53
Потому что курсовые распределили рандомно,кому-то повезло а кому-то нет.

Автор: TheBeginner 10.1.2015, 20:28
Задачу упростили теперь сказали что можно создать 2 массива - 1 со словами на Паскале,2-ой со словами Си и сделать одинаковые индексы к ним,и реализовать такой алгоритм 

1. Прочитать строку (до первого пробельного символа) из файла с программой на Паскале. 
2. Проверить, является ли оно ключевым словом, т.е. есть ли такая строка в массиве. Если есть, то каков ее индекс в массиве (ноль, один, …).
3. В файл с программой на Си записать сроку из массива с индексом, полученным в пункте 2.

я часть уже сделал...

но с заменой на одинаковые индексы пока сложно..(кто что может посоветовать и где поискать)...код я сам пишу..


Код

class Converter
{
public:
    char s[256]; //идент-р переменной
    int tp; 
    int tid;
    char instr[1000],
    outstr[1000];
int inlen,outlen,inpos;//текущие позиции (строки входные, выходные, позиция в строке входной)
int koper1,koper2,ker;//эти переменные считают количество операторов во входном, выходном файле и кол-во ошибок
int lenght_world; //длина "слова"
int wtype; //тип "слова"
int wnumf; //0 - целое число, 1 - дробное
int dt; //размер отступа (от начала строки)
Converter  *next,*np, *p,*vars, *lvars,*head, *ntype,*typeslist; 

    // здесь идет проверка на ключевое слово,
    // сравниваются полученное нами слово со словом из списка
    // и если да, то возвращается номер слова в списке
    // проверка на ключевое слово
    ///int Converter::funckeyW()


int Converter::funckeyW(char s)
    {
        ifstream fin("file.txt");
        if (!fin.is_open())
            cout<<"Файл отсутствует!\n";
        else
        {
            while (!fin.eof())
            {
            while (fin!='\0')
            {
            fin.getline(instr,s);
            }
        for (int i=0; i<Key_WordsP_num; i++)
        {// просмотр всего массива Key_Words_num
            for (int i=0; i<Key_WordsC_num; i++)
            {
                if(Key_WordsP_num[KeyW]==Key_WordsC_num[KeyWC])
                {
                    ofstream fout;
        fout.open("res2.txt");
        fout<<i;
        fout.close();
                }
            }
        }    
            }
            }
        return 0;    
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)