Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 14
1

Оставить в строке только один экземпляр каждого встречающегося символа

26.05.2011, 17:05. Показов 3862. Ответов 6
Метки нет (Все метки)

есть прога и есть задание:
Оставить в строке только один экземпляр каждого встречающегося символа
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
program kiruxa;
var
    s1,s2,s3: string;
    i: byte;
begin
    write('String: ');
    readln(s1);
    s2 := '';
    for i:=1 to length(s1) do begin
        s3 := copy(s1,i,1);
        if pos(s3,s2) = 0 then
            s2 := s2 + s3
    end;
    writeln('String: ',s2);
readln
end.
что означает эта строка, я в учебнике нашел пример в учебнике что типа: pos определяет начальную позицию переменной S3 в строке S2, и приравниваем к нулю если значение переменной не встретилось в строке. но оказалось не так. как правильно???
Pascal
1
2
 if pos(s3,s2) = 0 then
            s2 := s2 + s3
и можно еще пояснить каждую строку в этой проге:
Pascal
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
program kiruxa;
const
  N = 10;
 
var
  a: array [1..N] of real;
  max, temp: real;
  i, j: integer;
 
begin
  randomize;
  for i := 1 to N do
    a[i] := random + random(10);
 
  for i := 1 to N do
    write(a[i]:6:3);
 
  max := a[1];
  for i := 2 to N do
    if a[i] > max then
      max := a[i];
 
  writeln;
  writeln('max = ', max:5:3, ' 20% = ', 0.2 * max:5:3);
 
  j := 1;
  for i := 1 to n do
    if max - a[i] <= 0.2 * max then
      begin
    temp := a[i];
    a[i] := a[j];
    a[j] := temp;
    inc(j);
      end;
 
  for i := 1 to N do
    write(a[i]:6:3);
 
  readln;
end.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2011, 17:05
Ответы с готовыми решениями:

Оставить в строке только один экземпляр каждого встречающегося символа
С клавиатуры вводится строка. Оставить в строке только один экземпляр каждого встречающегося...

От каждого слова в строке оставить только первые 3 буквы.
Дана строка. От каждого слова оставить только первые 3 буквы. Например, вводим &quot;мама мыла раму&quot;,...

Преобразовать данный текст по следующему правилу: если нет символа «*», то оставить текст без изменений, иначе вставить перед и после каждого символа
Преобразовать данный текст по следующему правилу: если нет символа «*», то оставить текст без...

Если в строке нет символа *, то оставить эту строку без изменения
Помогите решить задачи 1)Найти сумму 10 членов ряда, в котором an=(n!)/n2. 2)Дана строка....

6
2856 / 1985 / 788
Регистрация: 23.09.2010
Сообщений: 4,877
26.05.2011, 17:10 2
Pascal
1
2
if pos(s3,s2) = 0 then //если символа s3 нет в строке s2 то сливаем (присоединяем) в строку этот символ
s2 := s2 + s3
0
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 14
26.05.2011, 17:14  [ТС] 3
Цитата Сообщение от SuPeR XaKer Посмотреть сообщение
Pascal
1
2
if pos(s3,s2) = 0 then //если символа s3 нет в строке s2 то сливаем (присоединяем) в строку этот символ
s2 := s2 + s3
это я и сам понял, ну она говорит что здесь идет логическая операция когда мы ставим =0. и я не могу понять тогда причем здесь pos и что это тогда за функция?
0
2856 / 1985 / 788
Регистрация: 23.09.2010
Сообщений: 4,877
26.05.2011, 17:36 4
true-так ей будет понятно?если логическое выражение истинно то выполняется оператор/операторы
это я и сам понял,
раз понял чё тогда не объяснить?пример не показать?
0
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 14
27.05.2011, 14:59  [ТС] 5
Цитата Сообщение от SuPeR XaKer Посмотреть сообщение
пример не показать?
можно)
0
2856 / 1985 / 788
Регистрация: 23.09.2010
Сообщений: 4,877
27.05.2011, 15:04 6
да я про тебя говорил вообщето.То что ты не можешь показать учителю пример (как именно работатает программа)
0
23 / 23 / 10
Регистрация: 17.10.2010
Сообщений: 76
27.05.2011, 23:57 7
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Как то так:

Pascal
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
program kiruxa;
const
  N = 10;
 
var
  a: array [1..N] of real;
  max, temp: real;
  i, j: integer;
 
begin
  randomize; // рандом
  for i := 1 to N do
    a[i] := random + random(10); // заполняем массив случайными числами
 
  for i := 1 to N do
    write(a[i]:6:3); // вывод массива
 
  max := a[1]; // первоначально присваевываем переменную макс первый элемент для дальнейшего сравнения
  for i := 2 to N do // идет по циклу для сравнения
    if a[i] > max then // если следующий элемент массива больше чем максимальный 
      max := a[i];  // то присваиваем элемент переменной макс
 
  writeln;
  writeln('max = ', max:5:3, ' 20% = ', 0.2 * max:5:3); // вывод на экран
 
  j := 1; // дополнительная переменная для замены
  for i := 1 to n do 
    if max - a[i] <= 0.2 * max then // если разность максимума и элемента(ов) массива меньше либо равно чем умноженный макс на 0.2 то
      begin
        temp := a[i]; // если условие выполняется то результат (новый) записываем вместо старого элемента
        a[i] := a[j]; // и так по всему массиву, если условие НЕ выполняется то значение не изменяется и цикл не выполняется
        a[j] := temp; 
        inc(j); // увеличение на 1 (Аналог j:=j+1)
      end;
 
  for i := 1 to N do
    write(a[i]:6:3);
 
  readln;
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2011, 23:57

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Если в строке, размещенной в динамической памяти, нет символа +, то оставить текст без изменения
Если в строке,размещенной в динамической памяти,нет символа +,то оставить текст без изменения,...

Из каждой группы равных между собой элементов нужно оставить только один
1.Дан целочисленный массив а1,а2,...аn,среди элементов которого могут быть равные. Из каждой группы...

В списке L с каждой группы подряд равных элементов оставить только один элемент
Опишите программу , которая в списке L с каждой группы подряд равных элементов оставляет только...

Оставить в строке только первое вхождение каждого символа. Взаимный порядок оставленных символов сохранить
Решил данную задачу так: //Оставить в строке только первое вхождение каждого символа. Взаимный...


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

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

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