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

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

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

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

21.12.2011, 23:04. Просмотров 425. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2011, 23:04     Вывести в выходной файл монотонные слова
Посмотрите здесь:

Вывести в выходной файл все слова, начинающиеся на заданную букву, и их количество - C++
Вводим название 2х файлов, затем букву, программа должна найти и вывести в выходной файл все слова, начинающиеся на заданную букву и их...

Найти и записать в выходной файл все симметричные слова - C++
В произвольном тексте входного файла, содержащем не более 10 строк, в каждой строке не более 80 символов, найти и записать в выходной файл...

Найти и записать в выходной файл слова, в которых нет повторяющихся букв - C++
Привет всем! У меня такая задачка: В произвольном тексте входного файла, содержащем не более 10 строк, в каждой строке не более 80...

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

Скопировать входной файл в выходной, удалив все слова, имеющие удвоенные буквы - C++
Написать программу, которая копирует содержимое входного файла в выходной; подсчитывает количество различных слов, входящих в данный текст;...

выбрать и записать в выходной файл слова по данному образцу: *#*#*, где * - согласная, а # - гласная буква - C++
Здравствуйте) Нужно написать программа на c++ Задание: В произвольном тексте входного файла, содержащем не более 10 строк, в...

Вывести в выходной файл округленное до n знаков после десятичной точки число E - C++
Выведите в выходной файл округленное до n знаков после десятичной точки число E. Число Е, округленное до 25 знаков после десятичной точки,...

Дан текстовый файл. Перепишите его в выходной файл, удалив все знаки препинания - C++
Не работает , выдает ошибку...Можно решение с комментариями!!?) #include &lt;iostream&gt; #include &lt;fstream&gt; using std::ifstream; ...

Дан текстовый файл. Перепишите его в выходной файл, удалив все знаки препинания - C++
Дан текстовый файл. Перепишите его в выходной файл, удалив все знаки препинания

С++ Файл выходной - C++
1)Записать выходной файл, добавить к каждому числу среднее арифметическое наименьшего по абсолютной величине и наибольшего из чисел файла ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.12.2011, 06:04     Вывести в выходной файл монотонные слова #2
Цитата Сообщение от Calipso Посмотреть сообщение
не могу найти ошибку в проге, помоги, плиз
либо выкладывайте текст ошибки или описывайте что не так работает, либо закрою тему ибо вопросов она не содержит
alkagolik
Заблокирован
22.12.2011, 07:39     Вывести в выходной файл монотонные слова #3
подозреваю что сигфолт в связях 11-13; 23-25. Кроме этого нужно проверять строгое неравенство, а вы проверяете нестрогое. Может библиотечные функции i\o конфликтуют, не? В строке 48 проверяется конец строки, а кто-то ноль поместил в буфер, размером в 1024 + 1 байт в ячейку block[1024]? не вижу.
Yandex
Объявления
22.12.2011, 07:39     Вывести в выходной файл монотонные слова
Ответ Создать тему
Опции темы

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