Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2007, 00:19   #1
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию Строки.

Подскажите пожалуйста, как реализовать такую вещь:
Я ввожу две строки, назовём их s1 и s2. И хочу сделать так, чтобы можно было из строки s1 удалить такие символы, которые найдутся в строке s2!
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 05.12.2007, 01:06   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Поочередно берете символы строки S2 и определяете их позицию в строке S1. Пока POS>0 - удаляете.
mihali4 вне форума Ответить с цитированием
Старый 05.12.2007, 08:24   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можно пройтись в цикле по s2 и функой
StringReplace(s1,s2[i],'',rfReplaceAll) подавить символы
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.12.2007, 00:03   #4
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

Спасибо!
Цитата:
Сообщение от mihali4 Посмотреть сообщение
Поочередно берете символы строки S2 и определяете их позицию в строке S1. Пока POS>0 - удаляете.
Честно сказать с первого раза не получилось!
Хотелось бы немного уточнить.
Незнаю как правильно написать сам цикл где POS>0, и тогда - удаляем.
Раз длина строки изменится, то тогда, лучше истользоватся цикл while.
А что будет условием входа в цикл?
Надо ли перед циклом while пройтись по длине строк s1 & s2 с помощью цикла for?
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 06.12.2007, 00:51   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вот цикл:
Код:
for i:=Length(s2) downto 1 do
begin
tmp:=s2[i];
while Pos(tmp,s1)>0 do
Delete(s1,Pos,1);
end;
end;
mihali4 вне форума Ответить с цитированием
Старый 06.12.2007, 01:21   #6
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var s1,s2:string;
    i,tmp:integer;
begin
s1:=Edit1.Text;
s2:=Edit2.Text;
for i:=Length(s2) downto 1 do
begin
tmp:=s2[i];
while Pos(tmp,s1)>0 do
Delete(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
Как можно ликвидировать данные ошибки?
end;
end.


Последний раз редактировалось Mr.User; 06.12.2007 в 01:29.
Mr.User вне форума Ответить с цитированием
Старый 06.12.2007, 02:29   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну, так оно и понятно...
Почему же TMP имеет тип INTEGER?
Это тоже строковая переменная.
А ведь счастье было так возможно... Нужно было всего-то навсего посмотреть в хэлпе формат функции POS. Или вам интереснее немного помучаться? Как мартышке с очками в известной басне?

Последний раз редактировалось mihali4; 06.12.2007 в 15:03.
mihali4 вне форума Ответить с цитированием
Старый 06.12.2007, 14:48   #8
очень крутой
 
Аватар для очень крутой
 
Регистрация: 24.11.2007
Сообщений: 6
По умолчанию

#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' подскажите хто знает
}
очень крутой вне форума Ответить с цитированием
Старый 06.12.2007, 16:26   #9
очень крутой
 
Аватар для очень крутой
 
Регистрация: 24.11.2007
Сообщений: 6
По умолчанию

#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] != '\0')
{
if (str[i] == 'x') //хочу сделать так штобы прога искала не x а считала символы на што х поменять штобы она считала символы
count++;
i++;
}

// выводим результат на экран
cout << "\n данные " << count;
}
очень крутой вне форума Ответить с цитированием
Старый 06.12.2007, 23:22   #10
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
Смех

Цитата:
Сообщение от очень крутой Посмотреть сообщение
#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] != '\0')
{
if (str[i] == 'x') //хочу сделать так штобы прога искала не x а считала символы на што х поменять штобы она считала символы
count++;
i++;
}

// выводим результат на экран
cout << "\n данные " << count;
}
Похоже немного на мою задачу, - но язык точно не Delphi! Это случаем не C# ? ...............
P.S. Полезу в Хэлп и буду добиваться счастья, которое было так возможно!
end;
end.

Mr.User вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
Строки Настена Помощь студентам 1 07.01.2008 23:47
Строки Юрии Александрович Паскаль, Turbo Pascal, PascalABC.NET 2 28.12.2007 19:10
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45