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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2009, 14:33   #1
xxxPascalxxx
Life:[### ]22%
Пользователь
 
Аватар для xxxPascalxxx
 
Регистрация: 15.12.2007
Сообщений: 48
Стрелка C++ Гистограмма

Всем доброго времени суток!
Прошу помоч с задачкой...

Дан пример программы:

Код:
// Одномерные массивы

// Подсчитать, сколько разных цифр, а также 
// разделительных символов (пробелов, окончаний строк, табуляций)
// и прочих символов 
// введено из потока ввода


#include <stdio.h>
#include <conio.h>

void main()
{
 int c, i, nwhite, nother;
/*
c - символ
i - счетчик цикла for
nwhite - число разделителей
nother - число прочих символов (не цифр и не разделитеоей)
*/
 int ndigits[10]; // массив, в кот.-число цифр от 0 до 9 

// инициализация переменных:  
 nwhite = nother = 0;

// инициализация элементов массива:
 for (i = 0; i < 10; i++) ndigits[i] = 0;
// В Си нумерация элементов массивов начинается с 0

// Цикл ввода символа, проверки, что это за символ
// и увеличение соответствующей переменной
 while ((c=getchar()) != EOF) 
  if (c >= '0' && c <= '9')
   ++ndigits[c-'0']; // Индекс массива - число, c - символ
// Если c=0, нам нужно увеличить на 1 элемент массива c[0]
// Для этого мы вычтем из кода символа c код нуля.
// Соответственно следует поступить и для других цифр.
// Запись ++i также означает i = i + 1.
  else 
   if (c == ' ' || c == '\t' || c == '\n') // Разделители
    ++nwhite;
  else
    ++nother;

// Вывод результатов
  printf("%s","Цифры");
  for ((i = 0; i < 10; i++)
   printf("%2d %3d",i,ndigits[i]);

  printf("%s %3d","Разделители ",nwhite);
  printf("%s %3d","Прочие символы ",nother);
  
}

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

1 ХХХХ
2 Х
3
4
5 ХХХХХХ
6 ХХ
7
8
9

Это означает: в потоке ввода есть слова
- из одной буквы - 4
- из двух букв - 1
- из пяти букв - 6
- из шести букв - 2

Помогите пожалуйста.
My Life v1.0b ERROR: health.dll not found
xxxPascalxxx вне форума Ответить с цитированием
Старый 05.11.2009, 15:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то типа:
Код:
//---------------------------------------------------------------------------

#pragma hdrstop

#include <tchar.h>
#include <iostream.h>
//---------------------------------------------------------------------------

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
 char s[100];
 char a[9][9]={{"****"},{"*"},{""},{""},{"******"},{"**"},{""},{""},{""}};
 for (int i = 0; i < 1; i++) {
  cin>>s;
  int k=strlen(s);
  if (k<10) {
   for (int e=0; e< 9; e++) {
	cout<<a[k-1][e];
   }
   cout<<'\n';
  }
 }
 cin.get();
	return 0;
}
//---------------------------------------------------------------------------
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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