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

Создать файл и внести в него последовательность символов. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удалить из строки все слова, которые начинаются на заглавную букву http://www.cyberforum.ru/cpp-beginners/thread99990.html
слова в строке могут разделяться пробелами и знаками препинания,в конце "." необходимо удалить из строки все слова,которые начинаются на заглавную букву,прошу очень помочь,именно с удалением слова по харастеристике...
C++ Системное время как взять системное время в милисикундах? http://www.cyberforum.ru/cpp-beginners/thread99989.html
Cистемы счисления, на языке С++ (объясните пожалуйста) C++
//--------------------------------------------------------------------------- #include <string> #include <iostream> #include <vcl.h> #pragma hdrstop //---------------------------------------------------------------------------
C++ Определить силу притяжения F между телами
помогите, пожалуйста решить задачку: определить силу притяжения F между телами массами m1 и m2, находящимися на расстоянии r друг от друга... решить её надо в Visual C++
C++ два дня немогу сделать прогу.... http://www.cyberforum.ru/cpp-beginners/thread99949.html
Ведомость успеваемости студентов (2 класса: базовый - студент; производный - студент ведомости успеваемости) Базовый класс (студент): Переменные: имя, возраст, высшее учебное заведение. Конструкторы: по умолчанию, с параметрами и копирования. Деструктор. Функции: задания высшего учебного заведения; изменении имени; ввода-вывода информации о возрасте; вывод всех данных.
C++ выполнение несложных заданий на С (графика,матрица,массив) необходимо выполнить 3 задачи на С : 1.графика-кораблик в движении,из трубы идёт дым(думаю можно и без дыма) 2.матрицы-дан двумерный массив(любой),расположить нечётные цифры по возрастанию,чётные по убыванию 3.массивы-даны несколько слов(любые).Найти повторяющиеся и неповторяющиеся буквы Буду очень благодарен за помощь,господа!Всем заранее спасибо Добавлено через 6 часов 59 минут... подробнее

Показать сообщение отдельно
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
05.03.2010, 04:53     Создать файл и внести в него последовательность символов.
Цитата Сообщение от Sandr12
Создать файл и внести в него последовательность символов. Вывести из этого файла в результирующий файл символы в обратной последовательности(зеркальное отображение).
нужен стек, так как непрерывный кусок в памяти для всего файла может не найтись

было дело

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
struct node {
    char *p;
    struct node *next;
};
 
struct stack {
    struct node *head;
};
 
void CreateStack(struct stack *ps);
int PushStack(struct stack *ps, struct node *pn);
int PopStack(struct stack *ps, struct node *pn);
 
char *MemDupLine(const char *l, size_t size);
void MemRevLine(char *l, size_t n);
 
enum {
    MAXLINE = 1000 /* maximal length of a line (equiv. to int) */
};
 
int main(void) /* C89 ANSI */
{
    char line[MAXLINE];
    int c, i;
    int maxlength, lastlength;
    
    struct stack s;
    struct node n;
    
    CreateStack(&s);
    
    maxlength = sizeof line;
    lastlength = 0;
    
    i = 0;
    
    do {
    
        if ((c = getchar()) != EOF)
            line[i++] = c;
    
        if (i >= maxlength || (c == EOF && i > 0)) {
        
            if (c == EOF && i > 0)
                lastlength = i;
        
            n.p = MemDupLine(line, i);
            
            MemRevLine(n.p, i);
            
            if(PushStack(&s, &n) == 0) {
                fprintf(stderr, "error: not enough memory" "\n");
                exit(EXIT_FAILURE);
            }    
            
            i = 0;
        
        }
    
    } while (c != EOF);
    
    while (PopStack(&s, &n) != 0) {
        
        if (lastlength == 0)
            fwrite(n.p, maxlength, 1, stdout);
        else {
            fwrite(n.p, lastlength, 1, stdout);
            lastlength = 0;
        }
        
        free(n.p);
    
    }    
    
    exit(EXIT_SUCCESS);
}
 
/* MemRevLine:  reverses n bytes in line l  */
void MemRevLine(char *l, size_t n)
{
    char *end;
    int c;
    
    end = l+n-1;
 
    for ( ; l < end; l++, end--)
        c = *l, *l = *end, *end = c;
}
 
/* MemDupLine:  duplicates size bytes of line l */
char *MemDupLine(const char *l, size_t size)
{
    char *p;
    
    p = (char *) malloc(size);
    
    if (p != NULL);
        memcpy(p, l, size);
    
    return p;
}
 
/* CreateStack:  creates a clear stack ps */
void CreateStack(struct stack *ps)
{
    ps->head = NULL;
}
 
/* PushStack:  pushes to a stack ps a node pn;
               returns 1 or 0 */
int PushStack(struct stack *ps, struct node *pn)
{
    struct node *tmp;
    
    tmp = (struct node *) malloc(sizeof(struct node));
    
    if (tmp == NULL)
        return 0;
    
    *tmp = *pn;
    tmp->next = ps->head;
    ps->head = tmp;
    
    return 1;
}
 
/* PopStack:  pops from a stack ps a node pn;
              returns 1 or 0 */
int PopStack(struct stack *ps, struct node *pn)
{
    struct node *tmp;
    
    if (ps->head == NULL)
        return 0;
    
    tmp = ps->head;
    *pn = *tmp;
    ps->head = tmp->next;    
    free(tmp);
    
    return 1;
}


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