Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/65: Рейтинг темы: голосов - 65, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 17.11.2020
Сообщений: 21

Дана строка. Определить, сколько раз в ней встречается символ, введенный пользователем

30.01.2021, 22:19. Показов 14066. Ответов 76
Метки си (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста решить задачку на си. Знаю как посчитать количество всех символов в строке, а вот сколько раз встречается введённый символ, никак понять не могу.
Дана строка. Определить, сколько раз в ней встречается символ, введенный пользователем
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2021, 22:19
Ответы с готовыми решениями:

Определить, сколько раз в файле встречается символ, введенный с клавиатуры
Задание: Написать программу которая определяет сколько раз в файле встречается символ введенный с клавиатури. Очень нужно на завтра (на...

Дана символьная строка.Подсчитать сколько раз в ней встречается подслово абба
Дана символьная строка.Подсчитать сколько раз в ней встречается подслово абба. В строке аббабба это слово встречается 1 раз а должно быть...

Дана строка символов. Сколько раз в ней встречается слог "МИ". 37. Определить самое длинное слово в строке. 38. Дана строка символов. Вывести на
строка символов.36. Дана строка символов. Сколько раз в ней встречается слог "МИ". 37. Определить самое длинное слово в строке. ...

76
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,400
31.01.2021, 21:50
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от RatPoison Посмотреть сообщение
Да и вообще сами программисты тоже делятся на определенные категории)
Это да! Это категории тяжелого залезания на шведскую стенку из граблей под кривым пионэрским транспарантом "С - это портабельный ассемблер":

1a. Нет никакого неопределенного поведения при переполнении целого типа. Значение просто заворачивается
1b. Ааааа!!!11 Гады! Кто это сделал?! Какая еще strict-overflow semantics в С?

2a. Неинициализированная переменная все равно содержит какое-то значение
2b. Ааааа!!!11 Идиоты! Кто это сделал?! Какой еще Itanium? Кому нужен этот Itanium?

3a. Память можно спокойно интерпретировать как любой тип данных через каст
3b. Ааааа!!!11 Сволочи! Кто это сделал?! Какая еще strict-aliasing semantics в С?

4a. memcpy копирует всегда слева направо. Поэтому запрет на копирование перекрывающихся блоков памяти - это "просто слова", а главное - реализация
4a. Ааааа!!!11 Поубивал бы! Кто это сделал?! Какие еще оптимизации направления копирования?

*** Вы сейчас находитесь здесь ***

5a. Если не завершить строку нулем, то программа просто побежит по памяти, пока не встретит его
5b. Ааааа!!!11 Что??? Кто это сделал?! Какие еще "встроенные функции"? Зачем и куда их встроили?

6a. При вызове функции через нулевой указатель программа просто упадет, а не предаст управление "куда угодно"
6b. Ааааа!!!11 Что??? Кто это сделал?! Какие еще "продвинутые оптимизации"?

...

Залезание по этой стенке выглядит как прогресс. Но проблема в том, что эта стенка никуда не ведет.
1
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
31.01.2021, 21:50
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Чем вы это сумели скомпилировать?
Я же написал чем и проверял в онлайне(пост #11)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12844 / 7593 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
31.01.2021, 21:53
Цитата Сообщение от zeroalef Посмотреть сообщение
Ваще-то
вот так вышло...

Заменил bzero на memset, а то вообще не собиралось, всё остальное так же.
0
Заблокирован
31.01.2021, 21:57
TheCalligrapher, у вас психоз?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,400
31.01.2021, 22:00
Цитата Сообщение от easybudda Посмотреть сообщение
Заменил bzero на memset, а то вообще не собиралось, всё остальное так же.
Где же "так же"? А зачем вы исправили командную строку?

В оригинальном примере было именно 1>&0, из-за чего программа на вход вообще ничего не получала и ничего не печатала. Потому и возник вопрос: что zeroalef хотел сказать своим примером?

Добавлено через 2 минуты
Цитата Сообщение от мама Стифлера Посмотреть сообщение
Я же написал чем и проверял в онлайне(пост #11)
Ну так вы получили от компилятора стандартное диагностическое сообщение, то есть ваша программа не скомпилировалась. А вы, по-видимому, даже не смотрели на диагностические сообщения.

Добавлено через 38 секунд
Цитата Сообщение от RatPoison Посмотреть сообщение
у вас психоз?
У меня?
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
31.01.2021, 22:06
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
А вы, по-видимому, даже не смотрели на диагностические сообщения
действительно, не смотрел
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,400
31.01.2021, 22:06
del
0
 Аватар для zeroalef
200 / 236 / 33
Регистрация: 29.03.2019
Сообщений: 667
31.01.2021, 22:06
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Что мы должны были увидеть в этом загадочном примере?
Я же привел цитату, которую опровергает данный пример.
На мой взгляд спор лишен предмета поскольку ввод в си:
1. буфферизированный
2. блокируемый
Данные свойства заставляют отказаться от портабельности в сторону системозависимости. В связи с чем такие языковые сущности (несмотря на то что они есть и четко определены) как си-строки лишены свойства востребованности поскольку в любом случае пользователь парсит системный ввод как массив байтов.
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Это какой-то сюр. Ни С, ни С++ не позволят
(clang10, gcc9, gcc10) -pedantic
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,400
31.01.2021, 22:07
Цитата Сообщение от мама Стифлера Посмотреть сообщение
действительно, не смотрел
Так просто еще немного нагажено в настройках.
0
Заблокирован
31.01.2021, 22:08
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
У меня?
Да. К чему это писательское творчество?)
Проверять вы не хотите ибо тратить время на это - фу.
А писать такое - время не жалко)

Про разновидности программистов я имел ввиду примерно следующее. (Утрированно)

1)Я пишу на javascript. Какие еще стек и куча? Какое еще выделение памяти?
2)Я пишу на С и знаю кое-что о языке. Мне платят за это деньги и я доволен.
3)Я пишу на С, знаю стандарт и тд. Если ты сделаешь это, то буде это, вот это то будет неопределенное поведение.
....
10)В Си у нас есть такие-то и такие проблемы. Почему они возникают и как мы этого можем избежать? Давайте попробуем разобраться и сделать нечто лучшее и более безопасное.

З.Ы.: программисты всякие нужны. Каждый в силу своей специфики.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,400
31.01.2021, 22:08
Цитата Сообщение от zeroalef Посмотреть сообщение
Я же привел цитату, которую опровергает данный пример.
Так он ее не опровергает вообще. Вы, похоже, просто не понимаете, что происходит в вашем же примере.

Цитата Сообщение от zeroalef Посмотреть сообщение
Данные свойства заставляют отказаться от портабельности в сторону системозависимости. В связи с чем такие языковые сущности (несмотря на то что они есть и четко определены) как си-строки лишены свойства востребованности поскольку в любом случае пользователь парсит системный ввод как массив байтов.
Нет. Это не имеет никакого отношения к реальному программированию.
0
Заблокирован
31.01.2021, 22:09
Цитата Сообщение от zeroalef Посмотреть сообщение
как си-строки лишены свойства востребованности поскольку в любом случае пользователь парсит системный ввод как массив байтов.
Я тоже про это говорил.
Си строка - это массив байтов, а не зримая полноценная сущность. Например как строка в виде структуры.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,400
31.01.2021, 22:09
Цитата Сообщение от zeroalef Посмотреть сообщение
(clang10, gcc9, gcc10) -pedantic
Нет, конечно. Все эти компиляторы выдают требуемое стандартом диагностическое сообщение. Даже -pedantic не нужно. То есть нет, не позволяют.

http://coliru.stacked-crooked.... bf26789e11
http://coliru.stacked-crooked.... 03c9af11d0
0
 Аватар для zeroalef
200 / 236 / 33
Регистрация: 29.03.2019
Сообщений: 667
31.01.2021, 22:18
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
В оригинальном примере было именно 1>&0, из-за чего программа на вход вообще ничего не получала и ничего не печатала.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
~/src:$ cat ./sample.c && gcc ./sample.c -pedantic
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int
main(int argc, char * argv[])
{
  char buf[ 10 ];
  
  memset( buf, 0 ,10 );
  fgets( buf, 10, stdin );
  fputs( buf, stdout );
  fprintf(stdout, "\n\nHello TheCaligrapher!\n");
  exit(EXIT_SUCCESS);
}
~/src:$ echo -e 'foobarbaz\n\0Walk around the stack' 1>&0 | ./a.out
foobarbaz
Walk around the stack
 
 
Hello TheCaligrapher!
~/src:$
Добавлено через 1 минуту
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Вы, похоже, просто не понимаете, что происходит в вашем же примере
Ай ли. Не первый год замужем, как говорится.
Цитата Сообщение от easybudda Посмотреть сообщение
вот так вышло...
Перенаправить stdout на stdin забыли

Добавлено через 3 минуты
Хех, вот я старый хрен лажанулся =))
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,400
31.01.2021, 22:22
Цитата Сообщение от zeroalef Посмотреть сообщение
Hello TheCaligrapher!
Вы настолько запутались в трех линуксовых соснах, что не в состоянии даже составить элементарный показательный тест???

Следите за руками

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int
main(int argc, char ** argv)
{
  char buf[ 10 ];
 
  bzero( buf, 10 );
  fgets( buf, 10, stdin );
  printf("%zu\n", strlen(buf));
  fputs( buf, stdout );
}
Запускаем

Code
1
2
3
4
$ echo -e 'foobarbaz\n\0Walk around the stack' 1>&0 | ./a.out
foobarbaz
Walk around the stack
0
Обратите внимание на нолик в выводе. Ну как? Постепенно начинает доходить?

Для изучения азов линуксового шелла советую вам рассмотреть еще пару примеров

Code
1
2
3
4
5
$ echo 'test' | wc -c
5
$ echo 'test' 1>&0 | wc -c
test
0
Ну как, наступает прояснение? Понятнее теперь, кто выводил вашу строку? Или пока лишь "Hello TheCaligrapher!" в голове?
0
Заблокирован
31.01.2021, 22:34
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Обратите внимание на нолик в выводе.
Откуда нолик? И что он говорит?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,400
31.01.2021, 22:42
Цитата Сообщение от RatPoison Посмотреть сообщение
Откуда нолик?
Вы не в состоянии по коду из четырех строк понять, откуда взялся нолик?

Цитата Сообщение от RatPoison Посмотреть сообщение
И что он говорит?
https://www.cyberforum.ru/post15226518.html

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
В оригинальном примере было именно 1>&0, из-за чего программа на вход вообще ничего не получала и ничего не печатала. Потому и возник вопрос: что zeroalef хотел сказать своим примером?
0
Заблокирован
31.01.2021, 22:51
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
$ echo 'test' | wc -c
5
$ echo 'test' 1>&0 | wc -c
test
0
Bash
1
echo "/tmp" | ls
тоже ничего не передает по пайплайну.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,400
31.01.2021, 23:01
Цитата Сообщение от RatPoison Посмотреть сообщение
Bash
1
echo "/tmp" | ls
тоже ничего не передает по пайплайну.
Што??? Как это "не передает"?

Code
1
2
$ echo "/tmp" | wc -c
5
Вы о чем вообще? И что вы хотели продемонстрировать через ls? ls не читает свои аргументы из stdin. Поэтому не ясно, при чем он здесь.

Если вы хотите извлечь аргументы для ls из stdin, тогда вам может помочь только xargs

Code
1
$ echo "/tmp" | xargs ls
0
Заблокирован
31.01.2021, 23:02
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
И что вы хотели продемонстрировать через ls?
что ls должно отобразить содержимое директории "/tmp", но выводит содержимое pwd.
От команды за пайплайном тоже кое-что зависит: готова ли она принять то, что дают через пайплайн.

Добавлено через 21 секунду
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
тогда вам может помочь только xargs
вот именно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.01.2021, 23:02

Дана строка, содержащая текст на русском языке. Определить, сколько раз в ней встречается самое длинное слово.
Дана строка, содержащая текст на русском языке. Определить, сколько раз встречается в неё самое длинное слово.

Дана строка символов, посчитать сколько раз встречается символ + и символ *
Дана строка символов, посчитать сколько раз встречается символ &quot;+&quot; и символ &quot;*&quot;. Помогите...

Дана строка символов. Сколько раз встречается в ней сочетание ‘-+=’.
Строковый тип данных. Задачи. 1) Дана строка символов. Сколько раз встречается в ней сочетание ‘-+=’. Буду очень признателен,

Дана строка. Посчитать, сколько раз в ней встречается буква “b”
Дана строка. Посчитать, сколько раз в ней встречается буква “b”. Вывести на экран исходную строку и полученный результат.

Определить сколько раз в данной строке встречается символ, введенный с клавиатуры
Определить сколько раз в данной строке встречается символ, введенный с клавиатуры. Поиск символа в строке и подсчет количества вхождений...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru