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

Задача с файлами и строками! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задачи: begin15, proc15, file15, recur15. http://www.cyberforum.ru/cpp-beginners/thread428682.html
может кто решал такие задачи из "Programming Taskbook. Электронный задачник по программированию" автор М. Э. Абрамян. Помогите решить пожалуйста в си++. Begin15. Дана площадь S круга. Найти его диаметр D и длину L окружности, ограничивающей этот круг, учитывая, что L = π·D, S = π·D2/4. В качестве значения π использовать 3.14. Proc15. Описать процедуру ShiftLeft3(A, B, C), выполняющую...
C++ Обработка структурированных типов данных Нужно разработать алгоритм и программу, реализующую структурированный тип данных (СТД): Линейный связанный список. Определить функции инициализации, присваивания, вывода содержимого и обработки (сортировка, поиск, сравнение). Не знаю с чего начать и как подступиться к этому, помогите кому не трудно http://www.cyberforum.ru/cpp-beginners/thread428675.html
C++ Builder Если элемент матрицы <= 10, то вычислить произведение элементов, иначе вычислить сумму
у меня есть сформированные случайным образом два массива и мне нужно сделать следующее: если элемент матрицы <= 10, то вычислить произведение этих элементов, иначе вычислить сумму. Массивы располагаются в статической и динамической памяти соответственно. Задание на первый взгляд несложное, но как это сделать в Си++ я не понимаю, помогите пожалуйста. void __fastcall...
C++ Шифрование файлов методом перестановки с двумя ключевыми словами
Здраствуйте ! Необходима программы или её исходник. Суть программы состоит : шифрование файлов методом перестановки с 2умя ключевыми словами. Буду очень блогодарен если есть готовая программа или её исходник, а если нету то очень проху помощи в её написании.
C++ Удаление слова из строки http://www.cyberforum.ru/cpp-beginners/thread428589.html
Помогите написать прогу ,которая будет удалить из каждой строки первое слово.
C++ Структура данных Ест некая структура данных с сылками, пускай будет дерево. Хочу узнать: //pos имя элемента этой структуры, пускай вершина дерева pos_1=pos->previous; //вершина pos_1 предыдущая от pos pos->previous=NULL; В последнй строчке pos_1 станет равным NULL или же ссылка обнулися? подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
16.01.2012, 16:35     Задача с файлами и строками!
Мы простых путей не ищем!
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
    
typedef struct WORDINFO {
    char * wi_ptr;
    int wi_len;
} wordinfo_t;
    
int last_max_word(const char * str, const char * delim, wordinfo_t * wi){
    char * buf, * curPtr, * maxPtr;
    int maxLen, curLen;
    
    if ( ! ( buf = strdup(str) ) )
        return -1;
    
    for ( maxLen = 0, maxPtr = buf, curPtr = strtok(buf, delim); curPtr != NULL; curPtr = strtok(NULL, delim) ){
        if ( maxLen <= ( curLen = strlen(curPtr) ) ){
            maxLen = curLen;
            maxPtr = curPtr;
        }
    }
    
    wi->wi_len = maxLen;
    wi->wi_ptr = (char*)str + (maxPtr - buf);
    
    free(buf);
    return 0;
}
 
int last_min_word(const char * str, const char * delim, wordinfo_t * wi){
    char * buf, * curPtr, * minPtr;
    int minLen, curLen;
    
    if ( ! ( buf = strdup(str) ) )
        return -1;
    
    for ( minLen = strlen(buf), minPtr = buf, curPtr = strtok(buf, delim); curPtr != NULL; curPtr = strtok(NULL, delim) ){
        if ( minLen >= ( curLen = strlen(curPtr) ) ){
            minLen = curLen;
            minPtr = curPtr;
        }
    }
        
    wi->wi_len = minLen;
    wi->wi_ptr = (char*)str + (minPtr - buf);
    
    free(buf);
    return 0;
}
 
#define STR_LEN 256
#define DELIM " ,.!?-;:\t\n"
    
int main(void){
    char inStr[STR_LEN], outStr[STR_LEN], * ptr;
    
    while ( printf("String: ") && fgets(inStr, STR_LEN, stdin) && *inStr != '\n' ){
        wordinfo_t minWord, maxWord;
        
        if ( last_max_word(inStr, DELIM, &maxWord) || last_min_word(inStr, DELIM, &minWord) ){
            fprintf(stderr, "Memory error!\n");
            exit(1);
        }
        if ( minWord.wi_ptr == maxWord.wi_ptr ){
            fprintf(stderr, "The same words, nothing to change!\n");
            continue;
        }
        else if ( minWord.wi_ptr > maxWord.wi_ptr ){
            wordinfo_t tmp = minWord;
            minWord = maxWord;
            maxWord = tmp;
        }
        
        ptr = outStr;
        strncpy(ptr, inStr, minWord.wi_ptr - inStr);
        ptr += minWord.wi_ptr - inStr;
        strncpy(ptr, maxWord.wi_ptr, maxWord.wi_len);
        ptr += maxWord.wi_len;
        strncpy(ptr, minWord.wi_ptr + minWord.wi_len, maxWord.wi_ptr - (minWord.wi_ptr + minWord.wi_len));
        ptr += maxWord.wi_ptr - (minWord.wi_ptr + minWord.wi_len);
        strncpy(ptr, minWord.wi_ptr, minWord.wi_len);
        ptr += minWord.wi_len;
        strcpy(ptr, maxWord.wi_ptr + maxWord.wi_len);
        
        printf("Result: %s", outStr);
    }
    
    return 0;
}
Это для введённой строки. Посмотрите, как работает, не сможете прикрутить файловый ввод/вывод - пишите...
 
Текущее время: 15:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru