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

Как переделать?

29.10.2015, 17:19. Просмотров 769. Ответов 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 чтобы заработал
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2015, 17:19
Ответы с готовыми решениями:

как переделать массив что бы не было его остановки и как добавить индекс
Такая вот задача найти индекс максимального элемента массива , вот мой код что...

Как переделать на 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; ...

9
nmcf
6400 / 5662 / 2580
Регистрация: 14.04.2014
Сообщений: 23,963
29.10.2015, 17:24 2
А остальное-то работает? Где инициализация used?
В чём суть задачи?
0
Vozmcfrncing
0 / 0 / 0
Регистрация: 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
6400 / 5662 / 2580
Регистрация: 14.04.2014
Сообщений: 23,963
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 / 0
Регистрация: 14.10.2015
Сообщений: 53
29.10.2015, 17:57  [ТС] 5
Проблема в том, что сказали сделать через scanf и printf и не использовать size и erase
0
nmcf
6400 / 5662 / 2580
Регистрация: 14.04.2014
Сообщений: 23,963
29.10.2015, 17:58 6
Я не пойму, что делает твоя программа, но если переводить как есть, то будет это (выше).
0
Vozmcfrncing
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 53
29.10.2015, 18:09  [ТС] 7
или сделать со смещением, выкинув повторяющийся элементы
0
nmcf
6400 / 5662 / 2580
Регистрация: 14.04.2014
Сообщений: 23,963
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 / 0
Регистрация: 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
6400 / 5662 / 2580
Регистрация: 14.04.2014
Сообщений: 23,963
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

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

как переделать на с++? с паскаля
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