Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
djkah11
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 5
#1

Задача с тимуса - C++

07.07.2012, 11:44. Просмотров 619. Ответов 1
Метки нет (Все метки)

Вот задача с тимуса, возникли с ней проблемы.Я знаю, что на форуме уже есть решение, но всё-таки хотелось бы узнать ошибку в своём кода.
Пока Федя писал условие для задачи
«Летопись GOV», ему пришло в голову,
что бумаги для печати условий может не
хватить. А тут ещё оказалось, что в его
текстовом редакторе нет возможности
определить количество страниц в тексте.
Однако Федя не растерялся и решил сам
написать программу, рассчитывающую
количество страниц по введённому
тексту.
Он знал, что на каждой странице h строк,
а в каждой строке w символов. Между
каждой парой соседних слов в одной
строке ставится ровно один пробел. Если
слово не помещается в строку, Федя не
делит его на слоги для переноса и не
ставит пробел, а просто пишет всё слово с
начала новой строки.
Исходные данные
В первой строке записаны целые числа h ,
w, n — количество строк на странице,
символов в строке и слов в тексте задачи,
соответственно (1 ≤ h , w ≤ 100; 1 ≤ n ≤
10 000). В следующих n строках записан
текст условия, которое написал Федя, по
одному слову в строке. Слова в условии
непусты, имеют длину не более w и
состоят только из строчных и заглавных
латинских букв и знаков препинания
(точка, запятая, восклицательный и
вопросительный знаки). Суммарная
длина всех слов не превосходит 10 000.
Результат
Выведите количество страниц в тексте
условия задачи.
Пример
исходные данные
3 5 6
To
be
or
not
to
be



результат
2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    
 
#include <iostream>
 
using namespace std;
 
int main()
{ int  h,n,w; 
cin>>h>>w>>n;
char b[101];
int a,k=w;
int m=1; 
int y=0; 
int i;
for( i=0;i<n;i++) {
        cin>>b;
      a=strlen(b);     
  k=k-a-1;
        if (k<a) {k=w-a; y++; }; 
      
        ;
        if (y>=h) {m++;y=0;};
     
 
        }
      
 
 if (y==0) m-- ;
        cout<<m;
      
 
    return 0;
    
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2012, 11:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача с тимуса (C++):

задача с Тимуса - C++
http://acm.timus.ru/problem.aspx?space=1&amp;num=1123 Задача на зачет нужна :scratch:

задача с Тимуса - C++
http://acm.timus.ru/problem.aspx?space=1&amp;num=1192

Задача с тимуса - C++
совсем недавно в программировании встретилась задачка с тимуса 1295 проблема в том что в ней используются очень большие числа. и что делать...

Задача с Тимуса 1446 - C++
Всем привет. Я несколько дней бился над задачей с Тимуса. Вот ссыль: вырезано Задача не сложная - просто ввести строки, например, в 4...

Задача с тимуса №1881 - C++
http://acm.timus.ru/problem.aspx?space=1&amp;num=1881 #include &lt;iostream&gt; using std::cin; using std::cout; int main() { int...

Олимпиадная задача с тимуса №1209 - C++
Ограничение времени: 1.0 секунды Ограничение памяти: 64 МБ Представим себе бесконечную последовательность цифр, составленную из...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
07.07.2012, 15:42 #2
немного переделал, теперь тесты проходит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream> 
using namespace std;
 
int main(void)
{ 
    int h, n, w; 
    cin >> h >> w >> n;
    char b[101];
    int a, k = w, m = 1; 
    for (int i = 0; i != n; ++i) 
    {
        cin >> b;
        a = strlen(b);     
        k -= a;
        if (k < 0)      
        {
            ++m;
            k = w - a - 1;
        }
        else
            --k;
    }
    cout << m / h + (m % h != 0) << endl;
    return 0;    
}
или
с меньшии изменениями
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream> 
using namespace std;
 
int main()
{ 
    int h,n,w; 
    cin>>h>>w>>n;
    char b[101];
    int a,k=w;
    int m=1; 
    int y=0; 
    int i;
    for(i=0;i<n;i++)
    {
        cin>>b;
        a=strlen(b);     
        k=k-a-1;
        if (k<-1) 
        {
            k=w-a-1; 
            y++; 
        }
        
        if (y>=h) 
        {
            m++;
            y=0;
        }
    }
    cout<<m;
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2012, 15:42
Привет! Вот еще темы с ответами:

Предохранители. Задача с тимуса №1327 - C++
Ограничение времени: 1.0 секунды Ограничение памяти: 64 МБ Янус Полуэктович (не помню уже, А или У) воспользовался машиной только...

Задача с тимуса про сороконожку - C++
У сороконожки 40 левых ножек и 40 правых ножек. Под кроватью у сороконожки a левых тапочек и b правых тапочек. Сороконожка, просыпаясь,...

Задача про Петю и таксиста с тимуса - C++
Петя любит ездить на такси. Для него это не только удовольствие от быстрой и комфортной поездки, но и возможность всласть поторговаться с...

Задачка из тимуса - C++
Добрый день. Сижу тут решаю задачку из тимуса и что то не прет :( Немогли бы помочь, подкинуть несколько идей как ее решить. Заранее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru