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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2012, 18:55   #1
CattcheR
 
Регистрация: 22.04.2012
Сообщений: 3
Восклицание Вертикальныэ гистограмы

В программе мне нужно было привести гистограмму числа вхождений всех букв латинского алфавита в такой стишок:
The owl and the pussy - cat wont to sea
In a beautiful pea-green boot.
They took honey and a plenty of money
Wrapped up in five - pound note.
, я сделал чтоб гистограммы были горизонтальные. Как сделать чтобы они были вертикальные?

Это мой код:

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
struct abc{
int mas[27];
};
int main()
{
struct abc virsh;
int d,i,j,n;
int ddd,ccc;
FILE *F1;
for( i=0;i<26;++i)
virsh.mas[i]=0;
F1 = fopen("F1.txt","r");
do
{ccc=fgetc(F1);
ddd=tolower (ccc);
switch (ddd)
{
case 'a': virsh.mas[0]++; break;
case 'b': virsh.mas[1]++; break;
case 'c': virsh.mas[2]++; break;
case 'd': virsh.mas[3]++; break;
case 'e': virsh.mas[4]++; break;
case 'f': virsh.mas[5]++; break;
case 'g': virsh.mas[6]++; break;
case 'h': virsh.mas[7]++; break;
case 'i': virsh.mas[8]++; break;
case 'j': virsh.mas[9]++; break;
case 'k': virsh.mas[10]++; break;
case 'l': virsh.mas[11]++; break;
case 'm': virsh.mas[12]++; break;
case 'n': virsh.mas[13]++; break;
case 'o': virsh.mas[14]++; break;
case 'p': virsh.mas[15]++; break;
case 'q': virsh.mas[16]++; break;
case 'r': virsh.mas[17]++; break;
case 's': virsh.mas[18]++; break;
case 't': virsh.mas[19]++; break;
case 'u': virsh.mas[20]++; break;
case 'v': virsh.mas[21]++; break;
case 'w': virsh.mas[22]++; break;
case 'x': virsh.mas[23]++; break;
case 'y': virsh.mas[24]++; break;
case 'z': virsh.mas[25]++; break;
default:;
}
}
while (ccc!= EOF);
for( j=0;j<26;j++)
{printf ("kilkist %c | " ,(char)(j+97));
for (i=1; i<=virsh.mas[j];i++)
{
printf ("%c",(char)178); }
printf ("\n");}
fclose(F1);
getch();
return 0;
}

Я знаю что это легко, но мне никак не получается. Помогите!
CattcheR вне форума Ответить с цитированием
Старый 01.05.2012, 19:32   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Если это легко, почему же не сделали?
Проверьте правильность вывода:
Код:
#include <stdio.h>
#include <conio.h>
#include <ctype.h>

int main()
{
    int i,j,mas[27],max;
    int ddd,ccc;
    FILE *F1;
    for( i=0; i<26; ++i)
        mas[i]=0;
    F1 = fopen("F1.txt","r");
    do
    {
        ccc=fgetc(F1);
        ddd=tolower(ccc);
        if (ddd>='a' && ddd<='z')
            mas[ddd-'a']++;
    }
    while (ccc!= EOF);
    fclose(F1);
    max=0;
    for( i=0; i<26; ++i)
        if (mas[i]>max) max=mas[i];
    printf("Maximum: %d\n",max);
    for( i=max; i>0; i--)
    {
        for( j=0; j<26; j++)
        {
            if (mas[j]>=i)
                printf("%c",(char)178);
            else
                putchar(' ');
        }
        printf ("\n");
    }
    for (j=0; j<26; j++)
        printf ("%c" ,(char)(j+97));
    getch();
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 01.05.2012 в 19:44.
BDA вне форума Ответить с цитированием
Старый 01.05.2012, 21:07   #3
CattcheR
 
Регистрация: 22.04.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Если это легко, почему же не сделали?
я только учусь)) Спасибо, работает прекрасно)
CattcheR вне форума Ответить с цитированием
Ответ


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