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

Определить является ли последовательность чисел, находящихся в файле, упорядоченной - C++

Восстановить пароль Регистрация
 
мариш<3
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 10
18.02.2011, 15:18     Определить является ли последовательность чисел, находящихся в файле, упорядоченной #1
Пмогите ПОЖАЛУЙСТА РЕШИИТЬ!!!!! НАДО ОЧЕНЬ ОЧЕНЬ!!!!!!!((((((((( НЕ МОГУ НИКАК
1. Дана текстовая строка. Вывести на печать все ее слова в таком порядке: все однобуквенные, потом все двухбуквенные, потом все трехбуквенные и т.д. до слова максимальной длины, используя функции strtok, strlen.
2. Дан текстовый фал, содержащий целые числа, разделенные пробелами. Определить является ли последовательность чисел, находящихся в файле, упорядоченной. В новый файл вывести сообщение о том, являются ли последовательность чисел в данном файле упорядоченной по убыванию или по возрастанию либо не упорядоченной, а также - среднее арифметическое всех чисел.[/QUOTE]
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2011, 15:18     Определить является ли последовательность чисел, находящихся в файле, упорядоченной
Посмотрите здесь:

C++ Выяснить, является ли последовательность из М введенных целых чисел упорядоченной по убыванию
Определить, является ли вводимая последовательность упорядоченной по убыванию. C++
C++ Является ли последовательность цифр натурального числоа упорядоченной по возрастанию
Определить, имеет ли последовательность чисел, находящихся в файле, нечетную длину C++
C++ Консольное приложение. В файле находятся только целые числа. Определить, имеет ли последовательность чисел, находящихся в файле, нечетную длину
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
18.02.2011, 17:57     Определить является ли последовательность чисел, находящихся в файле, упорядоченной #2
1. Строка задается аргументом программы:
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
82
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
 
#define DELIMS " \t\n,'\";:?!."
#define ALLOC_STEP 5
 
void errExit(int, const char*, ...);
char* myStrdup(const char*);
int cmp(const void*, const void*);
 
int main(int argc, char* argv[])
{
    char* line;
    char* word;
    char** words;
    size_t currCnt;
    size_t allocCnt;
    size_t i;
 
    if(argc != 2)
    errExit(1, "Usage: %s STRING.\n", *argv);
 
    if((line = myStrdup(argv[1])) == NULL)
    errExit(2, "Can't duplicate string.\n");
 
    currCnt = allocCnt = 0;
    words = NULL;
    
    for(word = strtok(line, DELIMS); word; word = strtok(NULL, DELIMS))
    {
    if(currCnt == allocCnt)
    {
        allocCnt += ALLOC_STEP;
        if((words = realloc(words, allocCnt * sizeof(char*))) == NULL)
        errExit(3, "Can't (re)alloc memory.\n");
    }
 
    if((words[currCnt++] = myStrdup(word)) == NULL)
        errExit(2, "Can't duplicate string.\n");
    }
 
    qsort(words, currCnt, sizeof(char*), cmp);
 
    
    for(i = 0; i < currCnt; ++i)
    if(puts(words[i]) == EOF)
        errExit(4, "Output error.\n");
    
    for(i = 0; i < currCnt; ++i)
    free(words[i]);
    
    free(words);
    free(line);
 
    exit(0);
}
 
void errExit(int code, const char* fmt, ...)
{
    va_list ap;
    va_start(ap, fmt);
    vfprintf(stderr, fmt, ap);
    va_end(ap);
    exit(code);
}
 
char* myStrdup(const char* str)
{
    char* duplicate = malloc((strlen(str) + 1) * sizeof(char));
    if(duplicate == NULL)
    return duplicate;
 
    strcpy(duplicate, str);
    return duplicate;
}
 
int cmp(const void* a, const void* b)
{
    return strlen(*(const char**) a) - strlen(*(const char**) b);
}
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
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
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
 
void errExit(int, const char*, ...);
 
int main(int argc, char* argv[])
{
    FILE* input;
    FILE* output;
    int number;
    int lastNumber;
    int ret;
    int isAscending = 1;
    int isDescending = 1;
    int cnt = 0;
    int sum = 0;
 
    if(argc != 3)
    errExit(1, "Usage: %s INPUT_FILE OUTPUT_FILE.\n", *argv);
        
    if((input = fopen(argv[1], "r")) == NULL)
    errExit(2, "Can't open file `%s' for input.\n", argv[1]);
 
    if((output = fopen(argv[2], "w")) == NULL)
    errExit(3, "Can't open file `%s' for output.\n", argv[2]);
    
    for( ; fscanf(input, "%d", &number) == 1;
     ++cnt, sum += number, lastNumber = number)
    {
    if(cnt)
    {
        if(number > lastNumber)
        isDescending = 0;
        if(number < lastNumber)
        isAscending = 0;
    }
    }
    
    if(ferror(input))
    errExit(4, "Input error on file `%s'.\n", argv[1]);
 
    if(cnt == 0)
    errExit(6, "File `%s' doesn't contain numbers.\n", argv[1]);
    
    if(fprintf(output, "The numbers in file `%s' are", argv[1]) < 0)
    errExit(5, "Output error on file `%s'.\n", argv[2]);
    
    if(isAscending)
    ret = fprintf(output, " in the ascending order");
    else if(isDescending)
    ret = fprintf(output, " in the descending order");
    else
    ret = fprintf(output, " neither in the ascending nor in the descending order");
    if(ret < 0)
    errExit(5, "Output error on file `%s'.\n", argv[2]);
 
    if(fprintf(output, "\nArithmetic mean is %.2f\n", sum / (double) cnt) < 0)
    errExit(5, "Output error on file `%s'.\n", argv[2]);
    
    exit(0);
}
 
void errExit(int code, const char* fmt, ...)
{
    va_list ap;
    va_start(ap, fmt);
    vfprintf(stderr, fmt, ap);
    va_end(ap);
    exit(code);
}
мариш<3
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 10
19.02.2011, 09:15  [ТС]     Определить является ли последовательность чисел, находящихся в файле, упорядоченной #3
Спасибо,а как нибудь по проще можно?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
19.02.2011, 12:05     Определить является ли последовательность чисел, находящихся в файле, упорядоченной #4
мариш<3, вторая задача и так проще некуда, первую можно "упростить", отказавшись от динамического выделения памяти и перейдя к статическим массивам, но мне это делать неохота. Да и от qsort можно избавиться, но код от этого не станет правильнее или корректнее.
мариш<3
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 10
22.03.2011, 12:21  [ТС]     Определить является ли последовательность чисел, находящихся в файле, упорядоченной #5
Пмогите ПОЖАЛУЙСТА РЕШИИТЬ попроще!!!!! НАДО ОЧЕНЬ ОЧЕНЬ!!!!!!!((((((((( НЕ МОГУ НИКАК
1. Дана текстовая строка. Вывести на печать все ее слова в таком порядке: все однобуквенные, потом все двухбуквенные, потом все трехбуквенные и т.д. до слова максимальной длины, используя функции strtok, strlen.
2. Дан текстовый фал, содержащий целые числа, разделенные пробелами. Определить является ли последовательность чисел, находящихся в файле, упорядоченной. В новый файл вывести сообщение о том, являются ли последовательность чисел в данном файле упорядоченной по убыванию или по возрастанию либо не упорядоченной, а также - среднее арифметическое всех чисел.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
22.03.2011, 12:23     Определить является ли последовательность чисел, находящихся в файле, упорядоченной #6
мариш<3, смотри сообщение Определить является ли последовательность чисел, находящихся в файле, упорядоченной
Yandex
Объявления
22.03.2011, 12:23     Определить является ли последовательность чисел, находящихся в файле, упорядоченной
Ответ Создать тему
Опции темы

Текущее время: 11:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru