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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Ханойские башни http://www.cyberforum.ru/cpp-beginners/thread244680.html
Начальная стопка имела 64 диска, нанизанных на один колышек так, что их размеры последовательно уменьшались к вершине. Монахи пытались переместить эту стопку с этого колышка на второй при условии, что при каждом перемещении можно брать только один диск и больший диск никогда не должен находиться над меньшим диском. Третий колышек предоставляет возможность временного размещения дисков. Все...
C++ Прокомментируйте пожалуйста код Объясните пожалуйста как работает данный кусок кода: template <typename T> Deque <T> Deque<T>::operator + (const Deque<T> &L){ Deque Result(*this); Elem<T> * temp = L.Head; while(temp != 0) http://www.cyberforum.ru/cpp-beginners/thread244678.html
Вычислить Zij=f(x1,y1) при сущ. ij x=(0.43,0.56,4) y=(0.76,0.12,4) Где f(x,y)=cos(x квадрат + 1)-sin(2y) C++
Всем привет Помогите написать програмку: "Вычислить Zij=f(x1,y1) при сущ. ij x=(0.43,0.56,4) y=(0.76,0.12,4) Где f(x,y)=cos(x квадрат + 1)-sin(2y)" С помощью функции, хотя бы начало, хочу разобраться.. Спасибо заранее=)))
C++ создать одномерный массив с++
создать массив со 100 элементами и заполнить его автоматически. Обработать массив с помощью указателя(поинт)и создать новый массив с чётными элементами.из полученного массива создать 2-мерный массив простым способом
C++ вычислить площадь треугольника со сторонами a,b,c по формуле Герона http://www.cyberforum.ru/cpp-beginners/thread244611.html
1)вычислить площадь треугольника со сторонами a,b,c по формуле Герона,проверив условие корректности введенных данных(длины всех сторон положиельны,сумма длин любых двух сторон,больше длины третьей). 2)найти максимальнй и минимальный элементы массива D,и поменять их местами.D-целые числа. 3)Найти среднее арифметическое значений функции f(x) в точках a.b.(a+b)/2,используя обращение к функции....
C++ Модули. Многофайловые проекты- Помогите пожалуйста. Определить функцию, возвращающую количество минут до окончания суток. Выполнить перегрузку функции для следующих типов параметров: Структура «время» (часы, минуты, секунды). Три целочисленных параметра: часы, минуты, секунды. Два целочисленных параметра: часы, минуты. подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
18.02.2011, 17:57     Определить является ли последовательность чисел, находящихся в файле, упорядоченной
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);
}
 
Текущее время: 07:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru