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

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

Войти
Регистрация
Восстановить пароль
 
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
#1

строка задом на перед - C++

22.12.2010, 17:44. Просмотров 717. Ответов 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
void reverse (char *str1,char *signs)
{int i,n,a,b;
    char *str2,*tmp;
    str2=(char*)calloc(strlen(str1)+1,1); //
    b=strlen(str1)-1; 
    do {tmp=(char*)calloc(strlen(str1),1);
        for(i=b;i>=0;i--) {
            if(check_signs(str1[i],signs)) {
                a=i;
                break;}
            else continue;}
        for(i=a;i>=0;i--) {
            if(check_signs(str1[i],signs)==0) {
                b=i+1;
                break;  }
            else
                if((i==0)&(check_signs(str1[i],signs)!=0)) {
                    b=i;
                        break;  }
                else continue;}
        n=a-b+1;
        memcpy(tmp,&str1[b],n);
        strcat(str2,tmp);
        strcat(str2," ");
        b=b-1;
        free(tmp);}
    while(i!=0);
    printf("\nNew string:\n\n");
    for (i=0;i<strlen(str2)-1;i++)
        printf("%c",*(str2+i));
    printf("\n");
}
Добавлено через 2 минуты
Цитата Сообщение от Егорка47 Посмотреть сообщение
str2=(char*)calloc(strlen(str1)+1,1);
можно комментарий?
Цитата Сообщение от Егорка47 Посмотреть сообщение
do {tmp=(char*)calloc(strlen(str1),1);
и вот тут
Цитата Сообщение от Егорка47 Посмотреть сообщение
f(check_signs(str1[i],signs))
вот тут комментарий, если функция check_signs :

C++
1
2
3
4
5
6
bool check_signs(char a,char *signs)
{ int i;
for (i=0;i<strlen(signs);i++){
        if(a==signs[i])
        return false;}
    return true;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2010, 17:44     строка задом на перед
Посмотрите здесь:

Нужно написать программу, которая читает из файла и пишет всё задом на перед - C++
например беру с файла слово неизвестного объему, а он пишет все задом наперед: программирование - еинавориммаргорп

Строка: вставить пробел перед каждой заглавной буквой - C++
Вводится строчка, например, HaveaNiceDay. Нужно чтобы выводилось Havea Nice Day, то есть перед заглавной буквой ставится пробел. Как...

Дана строка слов, разделенных пробелами. Сформируйте новую строку, вставив перед каждым вхождением слова "and" запятую - C++
Дана строка слов, разделенных пробелами. Сформируйте новую строку, вставив перед каждым вхождением слова &quot;and&quot; запятую. Определите, сколько...

Error C2143: синтаксическая ошибка: отсутствие ";" перед "строка" - C++
#include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; int main() { setlocale(...

Число задом наперед - C++
Помогите пожалуйста!!!! Задача. Перевернуть число, введенное с клавиатуры, задом на перед. Например, введено 12345, должны вывести 54321 ...

Вывести строку задом наперед - C++
1)Пользователь вводит строку данных программа выводит из нее только цифры. 2)Вывести строку задам на перед. #include &lt;iostream&gt; ...

Написать строку задом наперед - C++
помогите пожалуйста отладить, задача написать строку задом наперед. Работает не правильно, что я не так сделал? Вот мой код: void...

Вывести строку задом наперед - C++
#include &lt;iostream&gt; using namespace std; int main() { int len; char temp; cin&gt;&gt;len; cin.ignore(); char *str =...

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

Напечатать заданное слово задом наперед - C++
Составить программу, которая печатает заданное слово задом наперед


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,505
22.12.2010, 19:42     строка задом на перед #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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct NODE {
    char * str;
    struct NODE * next;
} node_t;
 
node_t * push(node_t * stack, const char * s){
    node_t * top;
    if ( ( top = (node_t*)malloc(sizeof(node_t)) ) == NULL ){
        perror("malloc");
        return(NULL);
    }
    if ( ( top->str = strdup(s) ) == NULL ){
        perror("strdup");
        return NULL;
    }
    top->next = stack;
    
    return top;
}
 
char * pop(node_t ** stack){
    node_t * top;
    char * s;
    
    if ( ( top = *stack ) == NULL )
        return NULL;
    
    *stack = top->next;
    if ( ( s = strdup(top->str) ) == NULL )
        perror("strdup");
    
    free(top->str);
    free(top);
    
    return s;
}
 
#define DELIM " \t\n"
 
int main(void){
    char buf[BUFSIZ], * p;
    node_t * stack;
    
    stack = NULL;
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ){
        for ( p = strtok(buf, DELIM); p; p = strtok(NULL, DELIM) )
            if ( ( stack = push(stack, p) ) == NULL )
                exit(1);
        *buf = 0;
        while ( p = pop(&stack) ){
            strcat(buf, p);
            strcat(buf, " ");
            free(p);
        }
        printf("Result: %s\n", buf);
    }
    
    exit(0);
}

Не по теме:

Опять заумно как-то получилось... Надо что-то менять!(с)

Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 19:57  [ТС]     строка задом на перед #3
мм..круто,еще одна непонятная программа)))
спасибо конечно, но я просил чтобы мне объяснили как работает предыдущая программа,а вы мне еще одну подкинули))
Ответ Создать тему
Опции темы

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