Задача с Тимуса, рассчет количества страниц по введённому тексту - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Пока Федя писал условие для задачи «Летопись GOV», ему пришло в голову, что бумаги для печати условий может не хватить. А тут ещё оказалось, что в его текстовом редакторе нет возможности определить количество страниц в тексте. Однако Федя не растерялся и решил сам написать программу, рассчитывающую количество страниц по введённому тексту. Он знал, что на каждой странице h строк, а в каждой строке w символов. Между каждой парой соседних слов в одной строке ставится ровно один пробел. Если слово не помещается в строку, Федя не делит его на слоги для переноса и не ставит пробел, а просто пишет всё слово с начала новой строки. Исходные данные В первой строке записаны целые числа h, w, n — количество строк на странице, символов в строке и слов в тексте задачи, соответственно (1 ≤ h, w ≤ 100; 1 ≤ n ≤ 10 000). В следующих n строках записан текст условия, которое написал Федя, по одному слову в строке. Слова в условии непусты, имеют длину не более w и состоят только из строчных и заглавных латинских букв и знаков препинания (точка, запятая, восклицательный и вопросительный знаки). Суммарная длина всех слов не превосходит 10 000. Результат Выведите количество страниц в тексте условия задачи. Мой код
#include<stdio.h>
#include<string.h>
 
void main()
{
    int h,w,n,count,i,k,l=1;
    char s[100];
    
    scanf("%d%d%d", &h,&w,&n);
    count = w;
    for(i=0;i<n;i++)
    {
        scanf("%s",s);
        count-=strlen(s)+1;
        if(count<0) {count=w-strlen(s)-1;l++;}
        else if(!count){count=w; l++;}
    }
    (l%h)? printf("%d",l/h + 1) : printf("%d",l/h);
}
WA #4. Не могу понять в чем дело не подскажите?

Решение задачи: «Задача с Тимуса, рассчет количества страниц по введённому тексту»

textual
Листинг программы
 char s[101];

Объяснение кода листинга программы

  1. В первой строке объявлена переменная s типа char, которая является массивом на 101 элемент.
  2. Данный массив предназначен для хранения строки, которая будет вводиться пользователем.
  3. Размер массива s выбран таким образом, чтобы он мог хранить максимальное количество символов, включая нулевой символ, который обозначает конец строки.
  4. При использовании переменных типа char, размер массива обычно выбирают таким образом, чтобы он был достаточным для хранения самой длинной строки, которую предполагается обрабатывать.
  5. В данном случае, предполагается, что пользователь введет не более 100 символов, поэтому выбран массив на 101 элемент.
  6. После объявления переменной s, ей присваивается значение по умолчанию, которое представляет собой набор байтов, где каждый байт содержит значение 0.
  7. Это значение можно изменить, введя с клавиатуры строку, которую нужно обработать.
  8. Ввод строки осуществляется с помощью функции scanf, которая принимает два аргумента: формат ввода и указатель на переменную, в которую необходимо сохранить введенные данные.
  9. Формат ввода %s указывает функции scanf, что необходимо ввести строку символов, и эта строка должна быть сохранена в переменной s.
  10. После ввода строки, функция scanf сохраняет введенные данные в переменной s и возвращает значение 1, указывая, что ввод был успешным.
  11. Если ввод был некорректным (например, пользователь ввел символ, который не является буквой или цифрой), функция scanf возвращает значение 0, и программа выполняет блок else.
  12. В блоке else программа выводит сообщение об ошибке ввода и просит пользователя повторить ввод.
  13. Если ввод был корректным, программа продолжает работу с переменной s, которая содержит введенную строку.
  14. Далее, программа выполняет расчет количества страниц, используя введенную строку.
  15. Для этого, она использует цикл for, который выполняется от 0 до длины строки (которая равна количеству символов в переменной s без учета нулевого символа).
  16. Внутри цикла, программа проверяет каждый символ строки.
  17. Если символ является буквой, к которой относится определенный код страницы, программа увеличивает счетчик страниц на 1.
  18. Если символ не является буквой, программа пропускает его и переходит к следующему символу.
  19. После выполнения цикла, программа выводит значение счетчика страниц.
  20. Таким образом, программа выполняет расчет количества страниц по введенному тексту и выводит результат на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы