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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2009, 19:29   #1
semennn
Пользователь
 
Регистрация: 28.03.2009
Сообщений: 28
По умолчанию Задача на строки

Задан текст. Напишите программу, которая посчитает статистику - сколько раз встречается буква A, сколько - B и т.д. При этом большие и маленькие латинские буквы считать одинаковыми.
Входные данные
На входе могут быть сколь угодно длинные строки. Текст, состоит из английских букв (больших и маленьких), знаков препинания, цифр и т.д.
Выходные данные
Вывести 26 строк. Каждая строка должна соответствовать латинской букве, буквы должны идти в алфавитном порядке. Каждая строка должна содержать сначала большую латинскую букву, которой она соответствует, пробел, символ - (тире), пробел и число: сколько раз буква встречается во входном файле.
Пример
Вход
Ab - a
Выход
A - 2
B - 1
C - 0
D - 0
E - 0
F - 0
G - 0
H - 0
I - 0
J - 0
K - 0
L - 0
M - 0
N - 0
O - 0
P - 0
Q - 0
R - 0
S - 0
T - 0
U - 0
V - 0
W - 0
X - 0
Y - 0
Z - 0
semennn вне форума Ответить с цитированием
Старый 24.04.2009, 20:10   #2
HoLToFF
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 58
По умолчанию

Код:
program Buk_Stat;

var
  m:array['A'..'Z'] of integer; {массив статистки букв}
  i: integer;
  b: char; s:string;
begin
  for b:= 'A' to 'Z' do    {иницализация массива}
    m[b]:=0;

  write('Vvedite stroku: '); readln(s);
  for i:= 1 to length(s) do   {по всей длинне строки}
    begin
    s[i]:=UpCase(s[i]);      {переводим обрабатываемую букву в верхний регистр}
    if s[i] in ['A'..'Z'] then    {если текущий символ, переведенный в верхний регистр в промежутке букв от А до Z}
    inc(m[s[i]]);    {Значит обратиться к массиву по индексу буквы и увеличить статистику по этой букве на 1}
    end;

  for b:='A' to 'Z' do   {выводим статистику}
    writeln(b,' - ',m[b]);

  readln;
end.
HoLToFF вне форума Ответить с цитированием
Старый 24.04.2009, 20:56   #3
HoLToFF
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 58
По умолчанию

Пардон, у вас чтение из файла, не заметил, будем считать что файл лежит в одной папке с программой, тогда код будет иметь вид:
Код:
program Buk_Stat;

var
  m:array['A'..'Z'] of integer; {массив статистки букв}
  i: integer;
  fl:text;
  b, s: char; dir:string;
begin
  for b:= 'A' to 'Z' do    {иницализация массива}
    m[b]:=0;

  writeln('Vvedite imya faila dlia chtenia (po umolchaniu In.txt)');
  readln(dir); if (dir = '') or (dir = ' ') then dir:='in.txt';
  reset(fl,dir);

    while not eof(fl) do   {пока не конец файла}
      begin
        while not eoln(fl) do   { пока не конец строки}
         begin
          read(fl,s);        {читать очередную букву из файла}
          s:=UpCase(s);      {переводим обрабатываемую букву в верхний регистр}
          if s in ['A'..'Z'] then    {если текущий символ, переведенный в верхний регистр в промежутке букв от А до Z}
          inc(m[s]);    {Значит обратиться к массиву по индексу буквы и увеличить статистику по этой букве на 1}
         end;
      readln(fl);
      end;

  for b:='A' to 'Z' do   {выводим статистику}
    writeln(b,' - ',m[b]);

  readln;
end.
HoLToFF вне форума Ответить с цитированием
Старый 24.04.2009, 23:33   #4
HoLToFF
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 58
По умолчанию

Как приятно осознавать, что тебе даже не скажут спасибо за работу
HoLToFF вне форума Ответить с цитированием
Старый 24.04.2009, 23:34   #5
JekaX
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 38
По умолчанию

Цитата:
Сообщение от HoLToFF Посмотреть сообщение
Как приятно осознавать, что тебе даже не скажут спасибо за работу
Это слишком )))
JekaX вне форума Ответить с цитированием
Старый 25.04.2009, 07:58   #6
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

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

Код:
#include <stdio.h>

int main(){
	int i=0,j,t,c=0,h=1,g=0,p=0;
	char a[255];
	gets(a);
	while(a[i++]);
	i--;
	for(j=0;j<i;j++){
		for(t=0;t<i;t++){
			if(a[t]==a[j]){
				c++;
			}
		}
		while(p<j){
			if(a[p]==a[j]){
				g++;
			}
			p++;
		}
		p=0;
		if(g==0){
			printf("\n%c : %d",a[j],c);
		}
		g=0;
		c=0;
	}
	return 0;
}
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на строки BERT Паскаль, Turbo Pascal, PascalABC.NET 1 07.04.2009 10:07
задача на строки BERT Помощь студентам 1 06.04.2009 20:53
Задача на строки LaSeule Помощь студентам 2 31.01.2009 00:54
Задача на строки Juhn Паскаль, Turbo Pascal, PascalABC.NET 1 13.05.2008 16:10