Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Vozmcfrncing
0 / 0 / 13
Регистрация: 14.10.2015
Сообщений: 53
#1

Как переделать? - C++

29.10.2015, 17:19. Просмотров 161. Ответов 9
Метки нет (Все метки)

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
#include "stdafx.h"
#include "iostream"
#include "cstring"
 
using namespace std;
char a[100];
bool used[257];
int _tmain(int argc, _TCHAR* argv[])
{
  cout << "The original text - ";
  scanf("%s",a); 
    for (int i = 0;i < strlen(a);) {
      if (used[a[i]])
        a.strcpy(i, i + 1);
      else
     {
        used[a[i]] = 1;
        ++i;
     }
 }
  cout << "The reversed text - ";
  printf("%s",a);
  system("pause");
  return 0;
}
нужно как-то сделать strcpy чтобы заработал
http://www.cyberforum.ru/cpp-beginners/thread813346.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2015, 17:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как переделать? (C++):

Как переделать на C++?
program Matrix31; var STR,STL,j,i,M,N:integer; a: array of real;...

Как из do while переделать в for
я уже настолько &quot;заучилась&quot;, что элементарные вещи сделать не могу....

Как переделать программу
была программа #include &lt;iostream&gt; using namespace std; class STROKA {...

Как правильно переделать в c++ ?
pascal код uses crt; var x,a,b,c,e,d,h:real; i,j:longint; q:char; ...

Как переделать код с# в с++
var str_ = new StreamReader(@&quot;C:\2.txt&quot;); string taan; int k = 0; string...

9
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
29.10.2015, 17:24 #2
А остальное-то работает? Где инициализация used?
В чём суть задачи?
0
Vozmcfrncing
0 / 0 / 13
Регистрация: 14.10.2015
Сообщений: 53
29.10.2015, 17:27  [ТС] #3
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
#include "stdafx.h"
#include "iostream"
#include "string"
 
using namespace std;
string a;
bool used[257];
int _tmain(int argc, _TCHAR* argv[])
{
    cout << "The original text - ";
    cin>>a; 
   for (int i = 0;i < a.size();) {
    if (used[a[i]])
        a.erase(i, i + 1);
    else
    {
        used[a[i]] = 1;
        ++i;
    }
}
    cout << "The reversed text - ";
    cout << a <<endl;
    system("pause");
}
вот такой была, и работала, а надо убрать string и сделать, чтобы работало с Char
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
29.10.2015, 17:49 #4
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
#include "stdafx.h"
#include "iostream"
#include <cstring>
#include <algorithm>
 
using namespace std;
char a[1000];
bool used[256];
int _tmain(int argc, _TCHAR* argv[])
{
   fill(used, used + 256, false);
 
    cout << "The original text - ";
    cin>>a; 
   for (int i = 0;i < a.size();)
   {
    if (used[a[i]])
        memmove(a + i, a + 2 * i + 1, strlen(a + 2 * i));
    else
    {
        used[a[i]] = true;
        ++i;
    }
}
    cout << "The reversed text - ";
    cout << a <<endl;
    system("pause");
}
0
Vozmcfrncing
0 / 0 / 13
Регистрация: 14.10.2015
Сообщений: 53
29.10.2015, 17:57  [ТС] #5
Проблема в том, что сказали сделать через scanf и printf и не использовать size и erase
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
29.10.2015, 17:58 #6
Я не пойму, что делает твоя программа, но если переводить как есть, то будет это (выше).
0
Vozmcfrncing
0 / 0 / 13
Регистрация: 14.10.2015
Сообщений: 53
29.10.2015, 18:09  [ТС] #7
или сделать со смещением, выкинув повторяющийся элементы
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
29.10.2015, 18:35 #8
Лучший ответ Сообщение было отмечено Vozmcfrncing как решение

Решение

Вот удаление повторяющихся символов.
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
#include "stdafx.h"
#include "iostream"
#include <cstring>
#include <algorithm>
 
using namespace std;
char a[1000];
bool used[256];
int _tmain(int argc, _TCHAR* argv[])
{
   fill(used, used + 256, false);
 
    cout << "The original text - ";
    cin>>a; 
   for (int i = 0; a[i] != '\0';)
   {
    if (used[a[i]])
        memmove(a + i, a + i + 1, strlen(a + i));
    else
        used[a[i++]] = true;
}
    cout << "The reversed text - ";
    cout << a <<endl;
    system("pause");
}
1
Vozmcfrncing
0 / 0 / 13
Регистрация: 14.10.2015
Сообщений: 53
29.10.2015, 19:29  [ТС] #9
C++
1
2
3
4
5
6
 for (int i = 0; a[i] != '\0';)
   {
    if (used[a[i]])
        memmove(a + i, a + i + 1, strlen(a + i));
    else
        used[a[i++]] = true;
а пояснить что к чему подробнее можете?

Добавлено через 14 минут
C++
1
fill(used, used + 256, false);
и значение этой строки плохо понимаю
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
29.10.2015, 19:33 #10
Что тут объяснять? memmove() копирует часть массива со сдвигом на 1 символ к началу. fill() необходима, чтобы used был заполнен false перед поиском.
0
29.10.2015, 19:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2015, 19:33
Привет! Вот еще темы с решениями:

как переделать на с++? с паскаля
function aaa(x: integer):boolean; var b: integer; begin ...

Как переделать прогу??
Вот программа на языке си++. как её переделать в си??? там надо вроде cout...

как переделать программу?
компилятор выдает много ошибок, как исправить ума не приложу. может быть что то...

как можно переделать программу?
как можно переделать эту программу так, чтобы использовались функции класса...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru