Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка в сортировке русского текста http://www.cyberforum.ru/cpp-beginners/thread877768.html
Есть произвольный текст и его слова нужно отсортировать в алфавитном порядке. Результат записать в другой текстовый файл. При сортировке слова обрезаются или исчезают символы из них. #include "stdafx.h" #include "stdio.h" #include "conio.h" #include "Windows.h" #include <string.h>
C++ GetCurrentDirectory и CharToOem - Windows7 + VS2012 как их "заставить дружить"? Здравствуйте, друзья. Подскажите, пожалуйста, как исправить ошибки? Вот код: #include <iostream> #include <windows.h> #include <io.h> #include <stdio.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread877759.html
C++ Подскажите аски код клавиши ENTER
Хотел написать программу, которая вводит строки из файла и выводит их потом построчно, но для вывода каждой новой строки нужно нажать клавишу enter. Подскажите аски код клавиши ENTER или подскажи как можно изменить программу, вот код: #include<iostream> #include<fstream> #include<vector> using namespace std; int main() { ifstream cin("input.txt"); //ofstream cout("output.txt"); ...
C++ В исходном тексте встречаются цепочки вида буквацифрабуквацифра
Здравствуйте, такая проблема: В исходном тексте встречаются цепочки вида буквацифрабуквацифра... Выделить все такие цепочки (длина их неизвестна) и включить их в таблицу, вначале расположив самые длинные, а затем короче. Для ускорения поиска иметь вспомогательный указатель на последний узел списка. Надо сделать 2-мя способами: через классы и списки.
C++ Написать шаблон класса полином и функции, высчитывающие производную и первообразную полинома http://www.cyberforum.ru/cpp-beginners/thread877734.html
Доброе утро. Нам задали такое задание:написать шаблон класса полином и функции,высчитывающие производную и первообразную полинома.Вроде написал ,но компиллятор выдаёт ошибки. Скажите,пожалуйста, как исправить ошибки. Poly.h #ifndef POLY_H_INCLUDED #define POLY_H_INCLUDED #include <iostream> #include <cmath> using namespace std; template<class T>
C++ Перегруженная функция sqrt начал писать программу,а тут такая фигня перегруженная функция sqrt,в чем фокус не пойму я еще ничего не написал толком а уже перегруз #include<iostream> #include<math.h> using namespace std; void main() { setlocale(LC_ALL,"russian");//руссификатор int Sc,Sk; double r=0,a=0,dg=0,dm=0;//инициализация переменных подробнее

Показать сообщение отдельно
TonyPride
2 / 2 / 1
Регистрация: 22.10.2012
Сообщений: 47

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

25.05.2013, 09:22. Просмотров 239. Ответов 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;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru