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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2010, 14:09   #1
Pecho
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 37
По умолчанию Подсчёт символов в массиве

Эмм...Короч.
Дан массив с английскими буквами, например,

mas_osn: array[1..610] of char = ('G','Y','J','N','G','M','Y','M','O ','A','E','G','R','F','R','T','E',' H','Y','L' ,'S','P','U','R','J');

Как сделать так, чтобы при просмотре программой массива, она определяла, сколько букв А, сколько букв В, сколько букв С и т.д.?
Просто в голове что-то не укладывается, не могу представить, как это будет выглядеть...
Pecho вне форума Ответить с цитированием
Старый 25.11.2010, 14:24   #2
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Pecho Посмотреть сообщение
Эмм...Короч.
Дан массив с английскими буквами, например,

mas_osn: array[1..610] of char = ('G','Y','J','N','G','M','Y','M','O ','A','E','G','R','F','R','T','E',' H','Y','L' ,'S','P','U','R','J');

Как сделать так, чтобы при просмотре программой массива, она определяла, сколько букв А, сколько букв В, сколько букв С и т.д.?
Просто в голове что-то не укладывается, не могу представить, как это будет выглядеть...
У тебя только английский алфавит с заглавными буквами ??? или все символы ASCII ????
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 25.11.2010, 14:41   #3
Pecho
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 37
По умолчанию

Только такой алфавит, который приведён в массиве
Я думал присобачить
Код:
function Calc(bukva: char): char;
var i, k: integer;
begin
 k := 0;
 for i := 1 to length(mas_osn[i]) do
  if mas_osn[i] = bukva then k := k + 1;
 Result := bukva + ': ' + IntToStr(k);
end;
Но что-то как-то не выходит
Pecho вне форума Ответить с цитированием
Старый 25.11.2010, 14:50   #4
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

1. Тебе надо создать еще один массив на 26 чисел , вначале задать им всем ноль .
2. Когда ты проходишь по своему массиву буквенному , то пользуйся ASCII для определения места во втором массиве , куда надо добавить +1 . Код ASCII - 65 , это будет номер ячейки во втором массиве .
3. После того , как ты прошел по всему первому массиву , во втором у тебя будет подсчитано , сколько раз какая буква встречалась .
4. Теперь осталось пройти по второму массиву и распечатать результат . символ сможешь получить , если к номеру ячейки прибавишь +65 и сделаешь из этого символ .

P.S. Надеюсь идея понятна
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 25.11.2010, 14:50   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
for i := 1 to length(mas_osn[i])
поменять на
Код:
for i := 1 to length(mas_osn)
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 25.11.2010, 15:08   #6
Pecho
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 37
По умолчанию

Utkin, не помогло
andrewpalkin, идея понятна, только 2-й пункт вызывает сложности...
Я понимаю, что этот пункт - основной программный кусочек, который, по хорошему, я должен написать сам, но вот с программной реализацией и возникают сложности! Можешь помочь?
Pecho вне форума Ответить с цитированием
Старый 25.11.2010, 15:14   #7
Pecho
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 37
По умолчанию

На сколько понял, во 2-й пункте mas[i]]++;, где mas числовой массив, i - номер символа в строке
Pecho вне форума Ответить с цитированием
Старый 25.11.2010, 15:16   #8
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Pecho Посмотреть сообщение
На сколько понял, во 2-й пункте mas[i]]++;, где mas числовой массив, i - номер символа в строке
Минут через 20-30 , смогу тебе написать код , но только на Java , так как под рукой только JAVA
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 25.11.2010, 15:17   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Pecho Посмотреть сообщение
Utkin, не помогло
Конечно, потому что это не единственная ошибка. Например, что возвращает Ваша функция? А что она должна возвращать ?
Напомню, что Char это символ, String это строка...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 25.11.2010, 15:32   #10
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Вот решение на твою задачу , функция которая решает все это и распечатывает . Тот же массив , можно отправлять в функцию , а массив подсчетов возвращать . Я просто пытался написать саму идею подсчета .

Код:
public void numberOfLetters()
	{
		char[] letters = {'A','V','B','D','F','A','V','B','D','B','A','B'};
		int[] numberOfLetter = new int[26];
		
		for(int i = 0 ; i < numberOfLetter.length ; i++)
			numberOfLetter[i] = 0;
		
		for (int i = 0; i < letters.length ; i++)
		{
			numberOfLetter[(byte)letters[i]-65]++;
		}
		
		for(int i = 0 ; i < numberOfLetter.length ; i++)
		{
			if(numberOfLetter[i] != 0)
				System.out.println((char)(i+65) +  " = " + numberOfLetter[i]);
		}
	}
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
верно ли, что среди символов данного текста есть n подряд идущих символов, Yuliya-Nik Помощь студентам 0 06.10.2010 23:44
C - Подсчёт символов Unknown_Object Общие вопросы C/C++ 2 29.06.2010 12:43
Записать функцию заменяющую (массиве символов) все числа на пробел. fsi Паскаль, Turbo Pascal, PascalABC.NET 2 01.06.2010 20:09
подсчёт символов с в строке Proger_1 Общие вопросы C/C++ 10 13.03.2010 20:42