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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти все числа-палиндромы, которые не больше 100, и их квадраты тоже палиндромы http://www.cyberforum.ru/cpp-beginners/thread179029.html
Натуральное число называется палиндромом, если его запись читается однинакого с начала и с конца (4884, 393, 1). Найти все числа-паиндромы, которые не больше 100, и их квадраты тоже палиндромы. помогите сделать прогу без перевода числа в строку
C++ программу копирования из заданного текста данной части в строку помогите написать программу копирования из заданного текста данной части в строку, (дано: abcdefgh пользователь вводит с клавы: № елемента, к-сть символов) помогите плиз... Добавлено через 1 час 11 минут ето чё, так сложно??=)) http://www.cyberforum.ru/cpp-beginners/thread179027.html
массивы, его индексы C++
Известны данные о росте 8 юношей в классе, упорядоченны по убыванию. Ни одна пара учеников не имеет одинаковый рост. В начале учебного года в класс поступил новый ученик.Какое место в перечне роста займёт этот ученик, если известно что его рост не совпадает ни с одним, меньше самого большого и большн самого маленького. #include <iostream> using namespace std; void main() { const int...
Вычислить сумму ряда C++
Помогите написать программу накопления суммы. S=1/a+1/a(a+1)+1/a(a+1)(a+2)...
C++ Сжать массив, удалив из него элементы, модуль которых находится в заданном интервале http://www.cyberforum.ru/cpp-beginners/thread179013.html
в одномерном массиве состоящем из n вещественных элементов вычислить: 1)максимальный элемент массива; 2)сумму элементов массива, расположенных до последнего положительного элемента. Сжать массив, удалив из него все элементы, модуль которых находится в интервале Освободившиеся в конце массива элементы заполнить нулями. Добавлено через 55 секунд ребят, подскажите пожалуста. как решить...
C++ преобразовать задание ввиде функции Все необходимые данные для функций должны передаваться им в качестве параметров. Использование гло- бальных переменных в функциях не допускается. #include "stdafx.h" #include <stdlib.h> #include <conio.h> #include <math.h> int main() { подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.10.2010, 17:03     Разбить введенную строку на слова и выделить под каждое слово отдельный массив
Цитата Сообщение от 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;
}
 
Текущее время: 15:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru