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

Вывести в выходной файл монотонные слова - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Просто позарез необходима поммощь! Молю, спасайте! Завтра зачёт... http://www.cyberforum.ru/cpp-beginners/thread414087.html
такая прогарамма о графах и выскакивает всего одна ошибка на 1-ю строчку(#include "stdafx.h") Не удается открыть файл include: stdafx.h: No such file or directory Как исправить? #include "stdafx.h" #include<iostream> #include<conio.h> #include <stdio.h> #include <fstream>
C++ Метод Ньютона для решения систем нелинейных уравнений. Задание по курсовой работе заключается в следующем: даны координаты нескольки точек в трёхмерном пространстве а также расстояния до некоторых неизвестных точек. Все точки пронумерованы. Пример входных данных: ---для точек 1 2 3.5 5 - точка под номером один с координатами (2, 3.5, 5); ---для связей(расстояния между точками) 3 4 5.6 - расстояние между точками 3 и 4 равно 5.6. Так вот, к... http://www.cyberforum.ru/cpp-beginners/thread414085.html
C++ Полиномы
Помогите решить. Даны полиномы Pn(x)=a0+a1x+a2x^2+...+anx^n, Pm(x)=b0+b1x+b2X^2+...+bmx^m, 0<=m<=n<=10. Получить полином Pn(x)=d*Pm(x),где d - произвольное число.
C++ Упорядочить данные
здравствуйте! есть следующая задача: Упорядочить данные в порядке убывания значений рабочего стажа. #include <string.h> #include <iostream> #include <stdio.h> #include <conio.h> using namespace std; int main() { int tmp;
C++ перевод из десятичной в двоичную, как составить программу в С++ http://www.cyberforum.ru/cpp-beginners/thread414054.html
очень нужен код на С++ перевод из десятичной в двоичную....для курсовой надо....тест составила...теперь надо что бы вычислял...похоже не правильно составила программу:))
C++ Максимальный и минимальный элементы матрицы. Нужна помощь. Надо написать программу, которая находит максимальный и минимальный элементы матрицы, а после поместить их на первое и последнее место соответственно. Заранее благодарен) подробнее

Показать сообщение отдельно
Calipso
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 6

Вывести в выходной файл монотонные слова - C++

21.12.2011, 23:04. Просмотров 437. Ответов 2
Метки (Все метки)

не могу найти ошибку в проге, помоги, плиз

Входной файл состоит из одной строки. Размер строки не ограничен и её необходимо считывать поблочно по 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;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru