Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
1

буквы

05.06.2010, 10:13. Показов 1052. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите написать программа на стандартном си
Строка, содержащая произвольный , состоит не более чем из 200 символов. Написать, какие буквы и сколько раз встречаются в этом тексте

Добавлено через 13 часов 40 минут
подскажите
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2010, 10:13
Ответы с готовыми решениями:

Заменить все малые буквы латинского алфавита на соответствующие большие буквы
Добрый вечер. Помогите, пожалуйста, исправить программу. Задание: Заменить все малые буквы...

Напечатать уникальные буквы заданного текста (буквы, встречающиеся один раз)
Помогите пожалуйста с программой. Задан текст.Напечатать буквы этого текста,которые встречаются...

Из текста удалить все буквы в, которые стоят сразу после буквы с
Подскажите, как решить задание(текст должен вводится пользователем на русском)

Переставить все входящие буквы «а» в начало слова, а буквы «я» – в конец
Привет! Нужно во всех словах строки S переставить все входящие буквы «а» в начало слова, а буквы...

15
11 / 11 / 3
Регистрация: 12.05.2010
Сообщений: 29
05.06.2010, 10:56 2
Ой. Используйте алгоритм Distribution Sorting. Удачи ^__^
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
05.06.2010, 11:09 3
suv121, тема обсуждалась не раз, пользуйтесь поиском.
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
#include <stdlib.h>
 
#define SIZE 256
 
void FillZero(int* arr, int size) {
  int i;
  for (i = 0; i < size; ++i)
     arr[i] = 0;
}
 
int main() {
  int  count[SIZE];
  char str[] = "This is test string";
  int i;
 
  FillZero(count, SIZE);
 
  for (i = strlen(str) - 1; i >= 0; --i)
    ++count[str[i]];
 
  printf("Result:\n");
  for(i = 0; i < SIZE; ++i)
    if (count[i] > 0)
      printf("%c - %d\n", (char)i, count[i]);
 
  return 0;
}
Результат: http://codepad.org/z6BwsMDh

Цитата Сообщение от pannaruto Посмотреть сообщение
Ой. Используйте алгоритм Distribution Sorting. Удачи ^__^
Позвольте спросить зачем?
1
11 / 11 / 3
Регистрация: 12.05.2010
Сообщений: 29
05.06.2010, 11:46 4
Думаю для этой проблеммы есть два решения :
1 : Найти все символы в строке, затем вычислять частоту каждой. Тогда сложность O(n^2)
2 : По алгоритму Distribution Sorting как вы решили ведь все символы соответственны числами в диапазоне [ 0 ... 256 ] Сложность О(n)
Вы согласны да ?

Но думаю лучше написать отдельную функцию чтобы увеличивать мобильность.
И ещё в ваше коде не нужна фукция FillZero. Она просто эквивалентна операции :
C
1
int  count[SIZE] = {0};
Так я думаю.

PS : Я не русский поэтому часто не правилно писал и также объяснял. Если возможно исправляйте мои ошибки, пожалуйста. Рад пообщаться с всеми ^__^.
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
05.06.2010, 11:56 5
Цитата Сообщение от pannaruto Посмотреть сообщение
Вы согласны да ?
Будем считать что да.
Цитата Сообщение от pannaruto Посмотреть сообщение
И ещё в ваше коде не нужна фукция FillZero.
Здесь:
C
1
int count[SIZE] = {0};
мы проинициализировали нулем лишь первый элемент массива, остальные инициализируются значением по умолчанию (тоже нулем).
Фактически использование функции FillZero эквивалентно вашему варианту, но теоритически это не так.

Не по теме:

Цитата Сообщение от pannaruto Посмотреть сообщение
Я не русский поэтому часто не правилно писал и также объяснял. Рад пообщаться с всеми ^__^.
На форуме многие русские пишут гораздо хуже, чем ты. Так что все нормально.

1
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
05.06.2010, 16:41  [ТС] 6
а что такое i = strlen(str) - 1??
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
05.06.2010, 16:50 7
Цитата Сообщение от suv121 Посмотреть сообщение
а что такое i = strlen(str) - 1??
Посмотри в интернете, что делает strlen и поймешь.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
05.06.2010, 16:53 8
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
void FillZero(int* arr, int size)
а чем memset() из string.h не угодила?
1
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
05.06.2010, 16:56 9
Цитата Сообщение от easybudda Посмотреть сообщение
а чем memset() из string.h не угодила?
Не люблю я функции семейства mem***, даже не знаю почему.
А вообще да, так будет быстрее.
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
05.06.2010, 17:20  [ТС] 10
а можете комментарии к программе написать
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
05.06.2010, 17:40 11
suv121, не к чему писать комментарии, здесь все просто как 2*2=4. Код сам по себе является комментарием, не ленись разобраться.
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
06.06.2010, 00:48  [ТС] 12
я не понимаю вот это ++count[str[i]];
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
06.06.2010, 10:29 13
Цитата Сообщение от suv121 Посмотреть сообщение
str[i]
Берем i-ый элемент строки.
Цитата Сообщение от suv121 Посмотреть сообщение
++count[str[i]]
Берем str[i]-ый элемент массива count и увеличиваем его на единицу.
1
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
06.06.2010, 11:03  [ТС] 14
так ведь str[i]-ый это буква , как можно взять массив у которого индекс буква
0
11 / 11 / 3
Регистрация: 12.05.2010
Сообщений: 29
06.06.2010, 14:50 15
тогда str[i] автоматически преобразовано от char к int. Каждой символ соответствен одному числу ( Смотрите в таблице ASCII )
1
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
06.06.2010, 17:46  [ТС] 16
спасибо всем , теперь я разобрался
0
06.06.2010, 17:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2010, 17:46
Помогаю со студенческими работами здесь

В текстовом файле после каждой 2 буквы вставлять буквы из слова
Подскажите, пожалуйста как на C++ в текстовом файле после, к примеру, каждой 2 буквы вставлять по...

Реализовать функцию, конвертирующую обычные буквы в буквы азбуки Морзе
Доброго времени суток,у меня задача написать программу,которая будет конвертировать буквы в буквы...

C (СИ) - Ввести строку символов.И После каждой 2 Буквы ( Именно буквы ) Вставить слово
Огромное Спасибо Darkrduk за эту программу ( программа вставляет MAU ) после каждого 2 символа ** ...

С экрана вводятся любые буквы. Подсчитать и вывести на печать количество вводов буквы А
Разработка алгоритма с использованием оператора do/while, while 1. С экрана вводятся любые буквы....


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru