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

Строки.Массивы.Верните слово по его индексу (индекс первого слова равен 0) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Символьный массив http://www.cyberforum.ru/cpp-beginners/thread882584.html
Описать символьный массив L,размерностью M элементов,заполнять массив с клавиатуры.Вывести элементы массива в несколько строк по пять элементов в строке. ПОМОГИТЕ ПОЖАЛУЙСТААА си++ Будьте внимательны при выборе раздела форума
C++ Сортировка методом пузырька Есть ф-ця void bulb (olimpiads** list) в какой метод пузырька, но он у меня не получаеться можете помочь решить проблему что бы оно сортировало по балам за олимпиаду #include <stdio.h> #include <locale> # define swap(A,B) {A=A^B;B=A^B;A=A^B;} struct olimpiads { char name ; http://www.cyberforum.ru/cpp-beginners/thread882581.html
C++ Литература по программированию
Всем привет! Подскажите пожалуйста годную литературу по программированию. Не по языкам, а по именно стилю, как грамотно составлять программы(например, перед написанием программы нужно ли уже знать как она работает или придумывать все по ходу). Я сейчас знаю только Си, и всего лишь могу быдлокодить немного.
переделать программу C++
Программа на функции. Нужно переделать программу на объект параметр функции. Как это делается? Не получается. #include <iostream> #include <cmath> using namespace std; float arctg(float x) { return ();
C++ Перепись населения (Найдите, какой возраст встречается чаще всего и выведите его.) http://www.cyberforum.ru/cpp-beginners/thread882558.html
В главном корпусе живёт N человек, возраст каждого варьируется от 0 до 1000 лет. Как-то раз с утра преподаватели решили выяснить, людей какого возраста в главном корпусе больше всего. Входные данные В первой строке число N - количество обитателей главного корпуса (1 ≤ N ≤ 105). Во второй строчке N чисел - их возраста. Каждый возраст - целое число от 0 до 1000. Выходные данные ...
C++ :Вывести все слова предложения, содержащие последнюю букву предыдущего слова не менее 2 раз Делаю задание:Вывести все слова предложения, содержащие последнюю букву предыдущего слова не менее 2 раз. Начал с пере формировки начальной строки в строку,где только 1 пробел между словами. В чём моя ошибка? #include <iostream> #include <conio.h> #include <string> using namespace std; int main() { string str,str2,s1; подробнее

Показать сообщение отдельно
Nikitaaaa
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 2

Строки.Массивы.Верните слово по его индексу (индекс первого слова равен 0) - C++

28.05.2013, 20:47. Просмотров 284. Ответов 0
Метки (Все метки)

Задание
Дан многострочный текст (char text[20][81]). Верните слово по его индексу (индекс первого слова равен 0). Слово – это непрерывная последовательность букв и/или цифр. Разделителями слов могут быть любые другие символы. Исходный текст не модифицировать.
Формат входных данных. [индекс слова] [M] [1-я строка] [2-я строка] и т.д. M – кол-во строк в тексте, целое число в диапазоне [1, 20]. Индекс слова - целое число в диапазоне [0, 30].
Формат выходных данных. [слово]; если искомого слова нет, то напечатайте сообщение «no solution»


Моя версия решения..


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
#include "stdafx.h"
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include "testing.h"
 
int main( )
{   
    int i,j;//индексы строк и столбцов
    int M;//количество строк в тексте
    char text[20][81] = {NULL};//массив строк,содержащий вводенный текст
    int index;
    char copy_text[20][81] = {NULL};//массив-копия введенного теста
    char seps[] = " @ !'',;:?-.";//строка разделителей
    char *token;//ccылка на начало подстроки
    int wordLength;//длина выделенного слова
    int wordCount=0;//количество слов, пока слов нет
    char words[41][22];//массив слов//,входящих в диапазон
 
    //Предложение ввести диапазон кол-ва символом в слове
    input_printf("Enter the index:\n");
    scanf("%d",&index);
    
    //Проверка входа диапазона длины слова в диапазон значений
    if(index >= 0 || index<= 30)
    {
        //Предложение ввести количество строк в вводимом тексте
 
        input_printf("Enter the count of strings in text:\n");
        scanf("%d",&M); //считывание введенного кол-ва строк 
 
        //Проверка входа кол-ва строк текста в диапазон значений
 
        if(M>=1 && M<=20)
        {
            //Предложение ввести текст
 
            input_printf("Enter text:\n");
            gets(copy_text[0]);//подаем в ф-цию gets строку,
            //иначе после printf она будет работать неправильно
            for(i=0;i<M;i++)
            {
                //считываем каждую введенную строку с клавиатуры
                gets(text[i]);
            }
            for(i=0;i<M;i++)
            {
                //копируем каждую строчку текста в массив-копию
                strcpy(copy_text[i], text[i]);
            }
            for(i=0;i<M;i++)
            {
                //разбиваем строку на подстроки с помощью ф-ции strtok()
                //выделяем первую подстроку
            
                token = strtok(copy_text[i], seps);
 
                //пока нет нуль-символа
 
                while(token != NULL)
                {
                    //вычисляем длинну подстроки
 
                    wordLength=strlen(token);   
 
                    int func_corr=1;//флаг, проверяющий, 
 
                    //является ли символ буквой или цифрой,
                
                    int ind;//переменная, которой присваивается
                    
                    for(j=0;j<wordLength;j++)
                    {
                        //проссматриваем символы слова
 
                        ind=isalnum(token[j]);//присваиваем переменной ind возвращающее значение ф-ции isalnum(0 или 1)
                        
                        if(ind==0)
                        {
                            //если не принадлежит, меняем флаг на 0
                            func_corr=0;
                        }
                    }
                    //Проверяем на наличие в слове спецсимволов
 
                    if(func_corr==1)
                    {
                        //копируем слово в массив слов
 
                        strcpy(words[wordCount],token);
 
                        //увеличиваем счетчик слов на 1 
 
                        wordCount++;
                        
                    }
                    //выделяем следующую подстроку
                    token = strtok(NULL, seps);
                }
            }
            
            if(wordCount<=index)
                printf("no solution\n");
            //Проверяем, есть ли слова, входящие в диапазон
            else if(wordCount!=0)
            {
                // выводим слово по индексу
                printf("%s\n", words[index]);
            }
            else
            {
                //если нет, печатаем "нет решения"
                printf("no solution\n");
            }   
        }
        else
        {
            //если нет, печатаем "нет решения"
            error_printf("no solution\n");
        }   
    }
    else
    {
        //если нет, печатаем "нет решения"
        error_printf("invalid input data\n");
    }
    
    WAIT_ANY_KEY;
 
    return 0;
 
 
}
Но мне в качестве разделителей нужно использовать не массив разделителей, как я сделал, а специальную строку isalnum() - Проверяет, является ли символ буквой или цифрой


Помогите мне, у меян не получается..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru