Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
4 / 4 / 1
Регистрация: 22.10.2012
Сообщений: 47

Замена постфиксной формы инкремента на полную

25.05.2013, 09:22. Показов 737. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно скопировать строки из первого файла во второй, заменяя постфиксную форму инкремента/декремента (a++, a--, a+=b, a-=b) на полную (a=a+1 и т.д.). Написал код, но в конечном файле получается какая-то каша. Вот код и результат работы программы:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
int ispost (char *str)
{
    if (strstr(str, "++")) return 1;
    if (strstr(str, "+=")) return 2;
    if (strstr(str, "--")) return 3; 
    if (strstr(str, "-=")) return 4;
    return 0;
}
 
 
void pref_change (FILE *in, FILE *out)
{
     char str[N], name[N];
     int i=0, j=0, L=0, R=0;
     while(!feof(in))
     {
                     L=0; R=0;
                     fgets (str, N, in );
                     cout<<str<<endl;
                     if (ispost(str)==0) fputs(str, out);
                     else
                     {
                         for(i=0;str[i]!='\0';i++)
                         {
                                      if (str[i]==' ') L=i;
                                      strncpy(name, str+i, 2);
                                      if (ispost(name)==0) fprintf(out, "%c", str[i]);
                                      else
                                      {
                                          R=i;
                                          i=i+2;
                                          strncpy(name, str+L, R-L);
                                          fprintf(out, "=");
                                          for (j=0; name[j]!='\0'; j++) fprintf(out, "%c", name[j]);
                                          switch (ispost(str))
                                          {
                                                 case 1: fprintf(out, "+1");
                                                 case 2: fprintf(out, "+");
                                                 case 3: fprintf(out, "-1");
                                                 case 4: fprintf(out, "-");
                                          }
                                      }
                         }
                     }
                         
                     
     }
}
 
 
int main()
{
    FILE *f1, *f2;
    char s1[N], s2[N];
 f1=fopen("input.txt", "r");
 f2=fopen("output.txt", "w");
 if(f1==NULL or f2==NULL) {cout<<"error"<<endl; getch();}
 else pref_change(f1, f2);
 fclose(f1);
 fclose(f2);
 getch();
}

Содержание input.txt:
Кликните здесь для просмотра всего текста
d=3; a+=5;
*p++;
bbb q->value++;
b=d;

Результат в output.txt:
Кликните здесь для просмотра всего текста
d=3; a= a(+-1-;
*p=*p(+1+-1-
bbb q->value= q->value+1+-1-
b=d;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.05.2013, 09:22
Ответы с готовыми решениями:

Перегрузка постфиксной и префиксной операции инкремента
Здравствуйте! У меня возник вопрос: почему выводит разный результат, казалось бы, одинаковый код Вот здесь выводит как должно: ...

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

Перевод выражения из постфиксной формы записи в префиксную
Всем добрый вечер. В интернете мало примеров по переводам выражения в префиксную форму записи. Поэтому пишу сюда. Я правильно понимаю, что...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2013, 09:22
Помогаю со студенческими работами здесь

Преобразовать арифметическое выражение из постфиксной формы в инфиксную
У меня задача: преобразовать арифметическое выражение из переменных, знаков арифметическич операций и круглых скобок из постфиксной формы в...

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

Отличие постфиксной и префиксной формы декрементирования при работе с массивами
Здравствуйте. Есть код, который работает(префиксная форма): #include &lt;stdio.h&gt; int main(void){ int mas;

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

Как узнать полную высоту формы (вместе с границами окна)
Как узнать полную высоту формы (вместе с границами окна)? То есть чтобы поместить еще одну форму точно на границе первой


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru