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

с++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задание на string http://www.cyberforum.ru/cpp-beginners/thread419168.html
Дан текст. Верно ли, что в нем есть пять идущих подряд одинаковых символов? Заранее большое спасибо!!!!
C++ Массив "Результаты футбольной команды" Всем привет!!!Пожалуйста помогите с задачкой!!! Задание: В массиве записаны результаты 20 игр футбольной команды (если игра окончилась выигрышем данной команды, то записано число 3, проигрышем – 0, если игра окончилась вничью – 1). Определить общее количество выигрышей и ничьих данной команды. Заранее благодарен!!! http://www.cyberforum.ru/cpp-beginners/thread419165.html
C++ Ввод - вывод в с ++
Структура "Владелец автомобиля": - Фамилия, имя, отчество; - Номер автомобиля; - Телефон; - Номер техпаспорта. Удалить элемент с заданным номером, добавить 2 элемента перед элементом с заданным именем.
C++ Логарифм
Блин народ нfпишите плиззз рабочий код к программе считающей выражение y=lg(8x^2-6x). ОЧЕНЬ НАДООО!!!
C++ Как сделать в данной программе перегрузку оператора? http://www.cyberforum.ru/cpp-beginners/thread419134.html
Нужно сделать, чтобы в этой программе была перегрузка оператора (любого). #include <vcl.h> #include <fstream.h> #pragma hdrstop #include "Stack1.h" #include "lr6.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm"
C++ Вложенные циклы и рекурсия. Не работает табулирование. Необходимо вычислить значение функции, решая задачу табулирования. y=\frac{x+\sum_{i=1}^{m}(1+\frac{1}{i})}{1+\sum_{k=1}^{m}{(x+\frac{5}{k}})^{2}} при m=10, xнач=1, xкон=5, n=15. Составил программу, но она выдает у меня только один результат. В чем ошибка? Помогите разобраться пожалуйста! #include <iostream> #include <math.h> #include <conio.h> подробнее

Показать сообщение отдельно
Calipso
 Аватар для Calipso
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 6
27.12.2011, 20:55     с++
программа работает некорректно. при вводе строки abc abc cba dab cba выдает только abc abc abc, вместо abc abc abc abc. как нужно исправить ошибку?

Входной файл состоит из одной строки. Размер строки не ограничен и её необходимо считывать поблочно по 1024 байта. Строка состоит из слов, разделенных пробелами. Каждое слово состоит из символов английского алфавита и имеет длину от 1 до 100. Гарантируется что между словами только один пробел и не используются другие знаки-разделители. Слово называется монотонно возрастающей последовательностью, если код каждого следующего символа больше кода предыдущего символа. Аналогично слово называется монотонно убывающей последовательностью, если код каждого следующего символа меньше кода предыдущего символа. Необходимо вывести в выходной файл монотонные слова, монотонно возрастающие слова записать без изменения, монотонно убывающие слова в обратном порядке написания слова. Необходимо учитывать при поблочном чтении, что в блок последнее слово может быть записано не полностью, а его оставшуюся часть нужно считать следующим блоком, и объединить в два блока в одном вспомогательном буфере.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
 
bool isAsc (char*buf, int left, int right) 
{
    if (left > right)
        return false;
        for (int i=left; i<=right-1; i++)
        {
            if (buf[i] >= buf[i+1])
                return false;
        }
        return true;
}
 
bool isDesc(char*buf,int left, int right)
{
    if (left > right)
        return false;
        for (int i=left; i<=right-1; i++)
        {
            if (buf[i] <= buf[i+1])
                return false;
        }
        return true;
}
 
int main(int argc, char* argv[]) 
{
 
    if (argc != 3) {
        cout<<"Wrong number of arguments!" << "\n";
        exit(1);
    }
    
    FILE * fin = freopen(argv[1], "rt", stdin);
    FILE * fout = freopen(argv[2], "wt", stdout);
    char block[1024];
    char buf[2048];
    int pos=0;
    
    while (fgets(block, 1024, fin) != 0) 
    {
        int i=0;
        while (block[i] !=0) {
            buf[pos] = block[i];
            i = i+1;
            pos = pos+1;    
    }
        int start=0;
        for(i=0;i<=pos-1;i++){
            if (buf[i]==' ') 
            {
                if (isAsc(buf, start, i-1)) 
                {   
                    for(int j=start; j<=i-1;j++)
                        fputc(buf[j],fout);
                    fputs(" ", fout);
                } 
                else if(isDesc(buf, start, i-1))
                {
                    for(int j=i-1; j>=start;j--)                    
                        fputc(buf[j],fout);
                    fputs(" ", fout);
                }
                start = i+1;
            }
        }
 
        i=0;
        while(start<pos)
            buf[i++]=buf[start++];
        pos=i;      
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru