1 / 1 / 0
Регистрация: 29.09.2018
Сообщений: 64
1

Дана строка символов до точки. Оставить в ней только слова, начинающиеся на буквы «A», «D»

21.12.2018, 22:57. Показов 3195. Ответов 12
Метки c#, c++ (Все метки)

Студворк — интернет-сервис помощи студентам
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stdlib.h> 
#include <time.h> 
#include <stdio.h> 
#include <conio.h> 
#include <locale.h> 
 
#define SIZE_A 60 
#define SIZE_B 85 
 
enum extremum { MIN_LAST, MAX_FIRST }; 
typedef enum extremum EXTREMUM; 
 
size_t min_max_index(int *, size_t, EXTREMUM); 
void swap_elements(int *, size_t, int *, size_t); 
void show_array(int *, size_t); 
void simple_random_array(int *, size_t); 
 
int main() { 
    int a[SIZE_A], b[SIZE_B]; 
    size_t min_last_index, max_first_index; 
 
    srand((unsigned)time(NULL)); 
    simple_random_array(a, SIZE_A); 
    simple_random_array(b, SIZE_B); 
 
    setlocale(LC_CTYPE, "Russian_Russia.1251"); 
    printf("Исходный массив A(%u):\n\n", SIZE_A); 
    show_array(a, SIZE_A); 
    printf("Исходный массив B(%u):\n\n", SIZE_B); 
    show_array(b, SIZE_B); 
 
    max_first_index = min_max_index(a, SIZE_A, MAX_FIRST); 
    min_last_index = min_max_index(b, SIZE_B, MIN_LAST); 
    swap_elements(a, max_first_index, b, min_last_index); 
 
    printf("Изменённый массив A(%u):\n\n", SIZE_A); 
    show_array(a, SIZE_A); 
    printf("Изменённый массив B(%u):\n\n", SIZE_B); 
    show_array(b, SIZE_B); 
 
    _getch(); 
    return 0; 
} 
 
size_t min_max_index(int * _array, size_t _size, EXTREMUM _min_max) { 
    size_t n, index = 0; 
    int x = _array[0]; 
    for (n = 1; n < _size; n++) { 
        if (_min_max && x < _array[n]) { 
            x = _array[n]; 
            index = n; 
        } else if (!_min_max && x >= _array[n]) { 
            x = _array[n]; 
            index = n; 
        } 
    } 
    return index; 
} 
 
void swap_elements(int * _in_array, size_t _in_index, int * _from_array, size_t _from_index) { 
    size_t temp = _in_array[_in_index]; 
    _in_array[_in_index] = _from_array[_from_index]; 
    _from_array[_from_index] = temp; 
} 
 
void show_array(int * _array, size_t _size) { 
    size_t n; 
    for (n = 0; n < _size; n++) printf("%6i\n", _array[n]); 
    printf("\n"); 
} 
 
void simple_random_array(int * _array, size_t _size) { 
    size_t n; 
    for (n = 0; n < _size; n++) _array[n] = rand(); 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2018, 22:57
Ответы с готовыми решениями:

Дана строка символов до точки. Удалить из нее все слова, начинающиеся с буквы «а»
Дана строка символов до точки. Удалить из нее все слова, начинающиеся с буквы «а».

Дана строка символов до точки. Выделить в ней все русские буквы, сделав их заглавными
Дана строка символов до точки. Выделить в ней все русские буквы, сделав их заглавными

Дана строка, содержащая английский текст. Есть ли в ней слова, начинающиеся с буквы "b"?
Дана строка, содержащая английский текст. Проверьте есть ли в ней слова, начинающиеся с буквы &quot;b&quot;....

Строки: Дана последовательность символов(строка). Если какой-то элемент встречается в ней более одного раза, оставить только первое вхождение
помогите решить.. Дана последовательность символов(строка). Если какой-то элемент встречается в ней...

12
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
22.12.2018, 13:42 2
Может напишите точное задание и перевод не нужен будет, просто написать в Делфи?
0
1 / 1 / 0
Регистрация: 29.09.2018
Сообщений: 64
22.12.2018, 16:12  [ТС] 3
да,просто написать на delphi
0
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
22.12.2018, 16:13 4
Так условие задачи напишите.
0
1 / 1 / 0
Регистрация: 29.09.2018
Сообщений: 64
22.12.2018, 21:34  [ТС] 5
Дана строка символов до точки. Оставить в ней только слова, начинающиеся на буквы «A», «D»,
«K», «P».
0
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
22.12.2018, 21:47 6
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
    t:TStringList;
    i:integer;
begin
s:=Edit1.Text;//строка из слов, разделенных пробелами
t:=TStringList.Create;
t.DelimitedText:=s;
for i:=t.Count-1 downto 0 do
if not(t[i][1] in ['A','D','K','P']) then t.Delete(i);
if t.Count=0 then Edit2.Text:='Нет слов начинающихся на A,D,K,P'
else
 begin
  s:='';
  for i:=0 to t.Count-1 do
   begin
    s:=s+t[i];
    if i<t.Count-1 then s:=s+' ';
   end;
  Edit2.Text:=s;
 end;
end;
0
Эксперт Pascal/Delphi
4891 / 2761 / 851
Регистрация: 04.10.2012
Сообщений: 10,062
23.12.2018, 10:29 7
Cyphabet, только после 21-й строчки добавьте
Delphi
1
t.Free;
0
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
23.12.2018, 11:47 8
Все время это забываю...
0
1 / 1 / 0
Регистрация: 29.09.2018
Сообщений: 64
23.12.2018, 13:35  [ТС] 9
а как это нужно запускать?там при компиляции просто ошибки возникают
0
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
23.12.2018, 13:53 10
Так проект создайте и запускайте, не забудьте проинициировать кнопку.
0
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
23.12.2018, 13:59 11
Запускай
Вложения
Тип файла: zip 333.zip (191.9 Кб, 1 просмотров)
0
1 / 1 / 0
Регистрация: 29.09.2018
Сообщений: 64
23.12.2018, 16:39  [ТС] 12
а можно как то в виде обычной консоли?
0
Эксперт Pascal/Delphi
4891 / 2761 / 851
Регистрация: 04.10.2012
Сообщений: 10,062
23.12.2018, 17:28 13
Лучший ответ Сообщение было отмечено Cyphabet как решение

Решение

Cyphabet, а самому лень изменить пару строчек?

Delphi
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
program Project1;
 
{$APPTYPE CONSOLE}
 
{$R *.res}
 
uses
  SysUtils,
  Classes;
 
var s:string;
    t:TStringList;
    i:integer;
begin
Writeln('Введите строку из английских слов, разделенных пробелами, с точкой в конце');
Read(s);
t :=TStringList.Create;
t.DelimitedText:=s;
for i :=t.Count-1 downto 0 do
if not(t[i][1] in ['A','D','K','P']) then t.Delete(i);
if t.Count=0 then Writeln('Нет слов, начинающихся на A,D,K,P')
else
 begin
  s :='';
  for i :=0 to t.Count-1 do
   begin
    s :=s+t[i];
    if i<t.Count-1 then s :=s+' ';
   end;
  Writeln('Оставшиеся слова: ', s);
 end;
 t.Free;
 Readln;
end.
Пример выполнения

Дана строка символов до точки. Оставить в ней только слова, начинающиеся на буквы «A», «D»
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2018, 17:28
Помогаю со студенческими работами здесь

Дана символьная строка. Оставить в ней только слова, содержащие хотя бы одну букву "А"
Читаю книгу по С. Дошел до строк. Столкнулся с таким заданием: Дана символьная строка. Оставить в...

Дана строка символов до точки. Удалить из строки первые буквы каждого слова
написал подобное #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include&lt;string.h&gt; int main () {...

Дана строка символов до точки, удалить из строки первые буквы каждого слова
Есть кейс: Дана строка символов до точки. Удалить из строки первые буквы каждого слова. Ломаю...

Оставить в строке только слова, начинающиеся на буквы «A», «D», «K», «P».
Дана строка символов до точки. Оставить в ней только слова, начинающиеся на буквы «A», «D», «K»,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru