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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
stydeht
0 / 0 / 0
Регистрация: 26.05.2009
Сообщений: 52
#1

Разбить введенную строку на слова и выделить под каждое слово отдельный массив - C++

20.10.2010, 16:18. Просмотров 1832. Ответов 1
Метки нет (Все метки)

Ребята помогите плиз! Задали задание, а сделать не могу(

1) Написать ф-ию, которая определяет является ли строка палиндромом
2) Заменить в строке все указанные буквы на тире (или звездочки) и вывести на экран кол-во произведенных замен
3) Разбить введенную строку на слова и выделить под каждое слово отдельный массив

заранее очень признателен.
З.Ы. (если не сложно можете написать на чистом си?)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2010, 16:18     Разбить введенную строку на слова и выделить под каждое слово отдельный массив
Посмотрите здесь:
C++ Разбить введенную строку на отдельные слова, выделив под каждое свой массив
Разбить строку на слова, определить число ли каждое слово или символьная строка C++
C++ Разбить введенную строку на слова
C++ Разбить строку на слова и заменить каждое на соответствующее ему число
C++ Разбить на слоги каждое четное слово в строке, а каждое нечетное записать в обратном порядке
Распечатать введенную строку, удалив из неё слова с нечетными номерами и добавив перевернутое слово к слову с четными номерами. C++
Строка: Строку разбить на слова и слова запихнуть в массив char. C++
Разбить строку на слова, добавить эти слова в массив строк C++
C++ Введенную строку разбить на отдельные числа
Создать новую строку, поместив в него все слова входной строки, взяв каждое слово в кавычки C++
Ввести строку вывести каждое слово из этой строки с кол-ом повторений этого слова учитывая все знаки препинания... C++
C++ Написать программу, которая считывает текст из файла и записывает каждое слово в отдельный элемент массива.

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
20.10.2010, 17:03     Разбить введенную строку на слова и выделить под каждое слово отдельный массив #2
Цитата Сообщение от stydeht Посмотреть сообщение
если не сложно можете написать на чистом си?
да написать-то не сложно
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
/*
1) Написать ф-ию, которая определяет является ли строка палиндромом
2) Заменить в строке все указанные буквы на тире (или звездочки) и вывести на экран кол-во произведенных замен
3) Разбить введенную строку на слова и выделить под каждое слово отдельный массив
*/
 
#include <stdio.h>
#include <string.h>
 
int is_palindrom(const char * str){
    const char * head, * tail;
    for ( head = str, tail = str + strlen(str) - 1; head < tail; ++head, --tail )
        if ( *head != *tail )
            return 0;
    return 1;
}
 
int split(const char * str, char *** words_array, int * size, const char * delim){
    char * buf, * wrd;
    if ( ( buf = strdup(str) ) == NULL )
        return -1;
    *words_array = NULL;
    *size = 0;
    for ( wrd = strtok(buf, delim); wrd; wrd = strtok(NULL, delim) ){
        if ( ( *words_array = (char**)realloc(*words_array, sizeof(char*) * (*size + 1)) ) == NULL ){
            free(buf);
            return -1;
        }
        if ( ( (*words_array)[*size] = strdup(wrd) ) == NULL ){
            free(buf);
            return -1;
        }
        *size += 1;
    }
    free(buf);
    return 0;
}
 
int replace(char * str, char from, char to){
    char * found;
    int cnt;
    for ( cnt = 0, found = strchr(str, from); found; ++cnt, found = strchr(found + 1, from) )
        *found = to;
    return cnt;
}
 
#define DELIM " \t\n"
 
int main(void){
    char buf[BUFSIZ], ** words, chFrom, chTo;
    int size, i;
    
    printf("String: ");
    scanf("%[^\n]%*c", buf);
    printf("Is%s palindrom\n", is_palindrom(buf) ? "" : "'nt");
    printf("Character to change: ");
    scanf("%c%*c", &chFrom);
    printf("New character: ");
    scanf("%c%*c", &chTo);
    printf("%d changes\n", replace(buf, chFrom, chTo));
    printf("Updated string: %s\n", buf);
    
    if ( split(buf, &words, &size, DELIM) ){
        fprintf(stderr, "Can't split string by words!\n");
        return 1;
    }
    printf("By words:\n");
    for ( i = 0; i < size; ++i )
        printf("%s\n", words[i]);
    
    for ( i = 0; i < size; ++i )
        free(words[i]);
    free(words);
    
    return 0;
}
Ответ Создать тему
Опции темы

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