Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
shedex
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 25
#1

Обработка массивов - C++

02.07.2012, 13:22. Просмотров 293. Ответов 3
Метки нет (Все метки)

помогите пожалуйста разобраться с кодом(прокомментировать), или помогите написать код ,но проще) сложно разобраться в некоментированной программе!!!

Обработка массивов
Задание:
Дана строка символов. Признак конца строки – символ ‘\n’ (перевод строки). Строка состоит из слов, разделенных пробелами. Вывести слова, заканчивающиеся слогом ‘qw’, и длину каждого из этих слов.
Исходный код:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
#define DELIM " ,.!;\'\"?"
int main()
{
char str[] = ""; 
char end[] = "qw";
gets(str);
char* ptr = strtok(str, DELIM);
while(ptr != NULL)
{
if(strlen(ptr) >= strlen(end)) 
if(strcmp(ptr + strlen(ptr) - strlen(end), end) == 0)
printf("%s - %d\n", ptr, strlen(ptr));
ptr = strtok(NULL, DELIM);
}
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2012, 13:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обработка массивов (C++):

Обработка одномерных массивов. Сортировка массивов - C++
Здравствуйсте! Помогите пожалуйста написать программу! В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)...

Обработка одномерных массивов. Сортировка массивов - C++
Здравствуйте, помогите пожалуйста решить задачу легким способом. В одномерном массиве, состоящем из n вещественных элементов, вычислить: ...

Обработка массивов - C++
Народ помогите пожалуйста ото чет я не понимаю как это на с++ реализовать. Заранее спасибо! 1. Дана стpока символов. Пpизнак конца...

Обработка массивов - C++
Задание:Дана целая квадратная матрица. Определить, является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех...

Обработка массивов - C++
Помогите пжласта! Скоро экзамен, вот надо допуск получить. 1. Найти число отрицательных элементов одномерного числового массива. 2....

Обработка массивов - C++
Требуется: 1) Массивы должны быть динамические – организовать вы-деление памяти; 2) значения элементов массива вводятся с клавиатуры; ...

3
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
02.07.2012, 15:28 #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
#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
#include <iterator>
 
int main()
{
   std::string str = "abc dgf reqw er rtqw\n";
   std::stringstream s(str);
   std::string seq;
   std::getline(s, seq);
   s.clear();
   s.str(seq);
 
   std::istream_iterator<std::string> it(s), end;
   
   std::for_each(it, end, [](const std::string& v) {
         if(v.length() >= 2 && v.substr(v.length()-2, 2) == "qw")
            std::cout << "word: " << v << "; length: " << v.length() << std::endl; 
         }
      );
   
   return 0;
}
http://liveworkspace.org/code/39f86d0d6187769e948b69e6f7e07eda
0
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
02.07.2012, 16:09 #3
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
#include <stdio.h>
#include <string.h>
 
int main()
{
    FILE* pf = fopen("in.txt", "r"); // строку берём из файла
    if(pf)
    {
        char buf[BUFSIZ];
        const char* pComb = "qw", *pDelims = " ";
        size_t pCombLen = strlen(pComb);
        fscanf(pf, "%[^\n]s", buf);
        char* pw = strtok(buf, pDelims);
        for(; pw; pw = strtok(NULL, pDelims))
        {
            size_t wLen = strlen(pw);
            if((wLen >= pCombLen) && !strcmp(pw + wLen - pCombLen, pComb))
            {
                printf("%s, %u\n", pw, wLen);
            }
        }
        fclose(pf);
    }
    else perror("fopen failed");
    return 0;
}
0
David Sylva
1289 / 951 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
02.07.2012, 16:40 #4
Можно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream> 
using namespace std; 
int main() 
{   
    setlocale(0, "rus");
    char str[] = "Real madrid qweqw ertyu asdfqw"; // исходная строка
    char* ptr; // указатель
 
    ptr = strtok(str, " "); 
 
    while(ptr!= NULL) // пока не закончатся символы
    { 
        int size = strlen(ptr); // длина слова
        if(ptr[size-1] == 'w' && ptr[size-2] == 'q') // если последний и предпоследний символы  
        {                                            // соответствуют условию
            cout << "Длина слова " << size <<  " "; // длина
            cout << ptr << endl;                    // слово
        }
        ptr = strtok(NULL, " "); 
    } 
}
0
02.07.2012, 16:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2012, 16:40
Привет! Вот еще темы с ответами:

Обработка массивов - C++
Дана стpока символов. Пpизнак конца стpоки - символ '\n' (пеpевод стpоки). Стpока состоит из слов, pазделенных пpобелами. Вывести...

Обработка массивов - C++
Написать программу вычисления величины K, обратной произведению тех элементов массива b1,b2,…,bn, для которых выполнимо: 2i&lt;bi&lt;i!. Если...

Обработка массивов - C++
Всем доброго времени суток. Помогите, пожалуйста, с задачей. Задан целочисленный массив X из 20 элементов, среди которых есть...

Обработка массивов - C++
Всем привет. Ребяят, нужна помощь: Задан массив А размера N (N - нечетное число). Вывести его элементы с нечетными номерами в порядке...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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