Теория и технологии программирования

Строки.

Подскажите пожалуйста, как реализовать такую вещь:
Я ввожу две строки, назовём их s1 и s2. И хочу сделать так, чтобы можно было из строки s1 удалить такие символы, которые найдутся в строке s2!
Поочередно берете символы строки S2 и определяете их позицию в строке S1. Пока POS>0 - удаляете.
Можно пройтись в цикле по s2 и функой
StringReplace(s1,s2[i],,rfReplaceAll) подавить символы
Спасибо!
Сообщение от mihali4
Поочередно берете символы строки S2 и определяете их позицию в строке S1. Пока POS>0 - удаляете.
Честно сказать с первого раза не получилось!
Хотелось бы немного уточнить.
Незнаю как правильно написать сам цикл где POS>0, и тогда - удаляем.
Раз длина строки изменится, то тогда, лучше истользоватся цикл while.
А что будет условием входа в цикл?
Надо ли перед циклом while пройтись по длине строк s1 & s2 с помощью цикла for?
Вот цикл:
Код:
for i:=Length(s2) downto 1 dobegintmp:=s2[i];while Pos(tmp,s1)>0 doDelete(s1,Pos,1);end;end;
Код:
procedure TForm1.Button1Click(Sender: TObject);var s1,s2:string; i,tmp:integer;begins1:=Edit1.Text;s2:=Edit2.Text;for i:=Length(s2) downto 1 dobegintmp:=s2[i];while Pos(tmp,s1)>0 doDelete(s1,Pos,1);Label1.Caption:=(s1);end;end;
[Pascal Error] Unit1.pas(37): E2010 Incompatible types: Integer and Char
[Pascal Error] Unit1.pas(38): E2250 There is no overloaded version of Pos that can be called with these arguments
[Pascal Error] Unit1.pas(39): E2250 There is no overloaded version of Pos that can be called with these arguments
Как можно ликвидировать данные ошибки?
Ну, так оно и понятно...
Почему же TMP имеет тип INTEGER?
Это тоже строковая переменная.
А ведь счастье было так возможно... Нужно было всего-то навсего посмотреть в хэлпе формат функции POS. Или вам интереснее немного помучаться? Как мартышке с очками в известной басне?
#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char str[] = "Здравствуй, мир!"; // объявляем символьный массив
char *b; // объявляем указатель на символ
b = &str[12]; // теперь b указывает на 12-ый символ str //символ это пробел
*b = M; // присваиваем первому элементу b символ М
cout << b; // выводим строку b на экран (Мир!) //присвоили указателю b
символ M а выходит слово мир почему не M подскажите хто знает
}
#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char str[100]; // объявление строки символов
// просим пользователя ввести строку символов
cout << "введите строку: ";
cin >> str; // считываем строку, введенную пользователем
int count = 0; /* объявление переменной-счетчика, в которой
будем хранить количество вхождений х в строку */
// в цикле сравниваем каждый символ строки с х-ом,
// в случае совпадения увеличиваем переменную-счетчик на 1.
int i = 0;
while(str[i] != )
{
if (str[i] == x) //хочу сделать так штобы прога искала не x а считала символы на што х поменять штобы она считала символы
count++;
i++;
}
// выводим результат на экран
cout << " данные " << count;
}
Сообщение от очень крутой
#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char str[100]; // объявление строки символов
// просим пользователя ввести строку символов
cout << "введите строку: ";
cin >> str; // считываем строку, введенную пользователем
int count = 0; /* объявление переменной-счетчика, в которой
будем хранить количество вхождений х в строку */
// в цикле сравниваем каждый символ строки с х-ом,
// в случае совпадения увеличиваем переменную-счетчик на 1.
int i = 0;
while(str[i] != )
{
if (str[i] == x) //хочу сделать так штобы прога искала не x а считала символы на што х поменять штобы она считала символы
count++;
i++;
}
// выводим результат на экран
cout << " данные " << count;
}
Похоже немного на мою задачу, - но язык точно не Delphi! Это случаем не C# ? ...............
P.S. Полезу в Хэлп и буду добиваться счастья, которое было так возможно!
это studio с++