С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/35: Рейтинг темы: голосов - 35, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 19.06.2012
Сообщений: 20
1

Длина текста не больше 150 символов, могут быть использованы любые символы

19.06.2012, 22:25. Показов 7111. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание:
Задан текст, состоящий из слов, записанных через запятые и/или пробел, и заканчивающийся точкой. Длина текста не больше 150 символов, могут быть использованы любые символы. Словом считается последовательность символов, не содержащая пробел. Сформировать новую строку из 7-символьных слов, состоящих из латинских букв, не имеющих аналогов записи в русском языке. Найти первое цифровое слово, возвести его в квадрат и в куб. Полученные три числа записать в виде массива.


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
#include "iostream.h"
#include "conio.h"
#include "stdio.h"
 
using namespace std;
 
void main ()
{
setlocale(0, "Rus");
// объявление переменных 
int i,j,k,per,prov,o,result;
char st1[150], st2[150]/*результат строка с 7 -ми символьными словами*/, st3[150]/*цифровое слово*/; 
 
// ввод текста
cout « "Введите текст " «endl;
gets(st1);
// посчет количества символов в строке
i = 0; 
while (st1[i]) {i++; per = i;}
 
 
// поиск цифрового слова
i = 0;
j = 0;
k = 0;
o = 0;
prov = 10;
while (st1[i])
{
if (st1[i]>='0' && st1[i]<='9') 
{
st3[k]=st1[i]; 
k++; 
}
if (st1[i]!= ' ') {o = i-o; if (o == k){result = k; break;}}
i++;
}
cout « result « endl;
// формирование строки из 7-символьных слов 
i = 0;
j = 0;
k = 0;
prov = 10;
while (st1[i] && prov >=7)
{
if (st1[i]>='a' && st1[i]<='z' && st1[i]!= 'a' && st1[i]!= 'c' && st1[i]!= 'e' && st1[i]!= 'p' && st1[i]!= 'o')
{/*cout « st1[i];*/ j++; st2[k] = st1[i]; k++; }// result = result + st1[i];}
 
if (j == 7) {/*cout « ' '*/st2[k]=' '; j = 0; k++; }//result =result + ' '; }
prov = per - i;
i++;
}
i = 0;
while (st2[i] && i!=k)
{cout «st2[i]; 
i++;
}
Пожалуйста помогите мне её доделать.срочно надо до завтра!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2012, 22:25
Ответы с готовыми решениями:

Слова могут содержать любые символы языка. Найти и вывести слово, содержащее наибольшее кол-во символов, отличных от заглавных букв.
Слова могут содержать любые символы языка. Найти и вывести слово, содержащее наибольшее кол-во...

Для каких целей могут быть использованы атрибуты WIDTH и HEIGHT тега IMG
Для каких целей могут быть использованы атрибуты WIDTH и HEIGHT тега IMG? Задание размеров в...

Длина текста в поле в SQL запросе больше 256 символов, надо прикрутить BLOB
Delphi 7, IB7, Win7 varADOQuery1Name: String; try ADOQuery2.SQL.Clear; ...

Ввести три отдельных строки текста, проверить, больше ли 5-ти символов длина хотя бы одна из строк
Ввести три отдельных строки текста. Проверить длину хотя бы одна из строк больше 5 символов ...

7
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
19.06.2012, 22:27 2
По идее цифровое слово, это слово состоящее только из цифр. Я так и не понял, слова разделяются пробелами или пробелами/запятыми?
0
0 / 0 / 0
Регистрация: 19.06.2012
Сообщений: 20
19.06.2012, 22:30  [ТС] 3
darkknight2008, ну можно и так и так
0
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
19.06.2012, 22:31 4
Слова в строке можно искать с помощью функции strtok, но стоит учесть, что эта функция изменяет строку. Т.е. вызывает эту функцию - находим разделяющий символ. Считай у нас есть начало и конец слова, если это слово только из цифр, то оно подходит под условие. Преобразуешь это слово в число и возводишь в квадрат и куб.

Добавлено через 56 секунд
На счет следующего. 7-ми символьные слова - это слова из семи символов или что-то другое?
0
0 / 0 / 0
Регистрация: 19.06.2012
Сообщений: 20
19.06.2012, 22:32  [ТС] 5
darkknight2008, если честно))я ничего не поняла...я в С++ не понимаю..помогите пожалуйста

Добавлено через 24 секунды
darkknight2008, да слова из 7 символов
0
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
19.06.2012, 22:33 6
Если это семь символьных слов, то что делать, если в веденной строке не будет семи таких слов?
0
0 / 0 / 0
Регистрация: 19.06.2012
Сообщений: 20
19.06.2012, 22:37  [ТС] 7
а вот этот код будет правильный:

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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <locale.h>
 
bool isnum(char* psz);
bool iscyrr(char* psz);
 
int main()
{
    setlocale(LC_ALL,"Russian");
 
    static char* psz = "apple fruit 256 verdict plumb viaduct cocktail aquarel\0";
 
    char* buf = psz; bool num = false;
    while ((buf = strchr(buf,' ')) != NULL && *psz != '\0')
    {   
        char temp[256] = "\0"; int n = 0;
        while (*psz != *buf && *psz != '\0') 
            temp[n++] = *psz++;
        temp[n] = '\0'; *psz++;
    
        if (isnum(temp) && !num)
        {
            printf("%d - %d - %d\n",atoi(temp),
                (int)pow((double)atoi(temp),2),
                (int)pow((double)atoi(temp),3));
            num = true;
        }
        
        else if (strlen(temp) == 7 && !iscyrr(temp))
            printf("%s\n",temp);
    }
 
    _getch();
 
    return 0;
}
 
bool iscyrr(char* psz)
{   
    bool found = false;
    for (int i = 0; psz[i] != '\0' && !found; i++)
        found = (psz[i] >= 'а' && psz[i] <= 'я') ? 1 : 0;
    return found;
}
 
bool isnum(char* psz)
{
    bool found = false;
    for (int i = 0; psz[i] != '\0' && !found; i++)
        found = (isalpha(psz[i])) ? 1 : 0;
    return !found;
}
Добавлено через 38 секунд
darkknight2008, я не знаю,честно говоря

Добавлено через 4 минуты
darkknight2008, ?он правильный или нет?
0
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
19.06.2012, 23:26 8
Предположим есть у тебя строка со словами str.
Нужно выделить в ней все слова и их обработать.
Т.е. первое - будет цикл, который будет перебирать все слова.
Функция strtok(str, toFind) - она ищет в строке str первую встречу любого символа из строки toFind. И вместо найденного слова он ставит символ с кодом 0.
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
char *inc = strtok(str, "."); // Ищем точку в строке.
if (inc == NULL) // Точки в строке нет
{
   cout << "Неверная строка!\n";
   return;
}
 
char *inc = strtok(str, " "); // Находим пробел - признак конца слова
do
{
  // В данный момент str указывает на начало слова, а inc на его конец.
  if (str != inc) // str может начаться с пробела, и при поиске мы наткнемся сразу на него.
                     // т.е. слова не будет. Поэтому проверяем не совпали ли у нас начало и конец
  {
    isNumber = 1;
    //В данный момент str указывает на начало слова и в конце слова стоит символ конца строки.
    while (*str != 0)
    {
       if (*str < '0' || *str > '9') // Если в слове есть знаки отличные от цифр, то это не число
       {
         isNumber = 0;
         break;
       }
       if (isNumber == 1)
       {
          //Если слово число - то выполняешь нужные действия
          // Типа распознаешь его, возводишь в квадрат, куб.
       }
 
       // Проверяешь длину слова, если она 7, то проверяешь дальше
       // Пробегаешь опять по всему слову, если там только символы не похожие на русские, то
       // слово тоже удовлетворяет условию - обрабатываешь его.
    }
  }
  str = inc + 1; // Встаем на следующий символ после найденного
  inc = strtok(NULL, " "); // Ищем следующую встречу пробела.
} while (inc != NULL)
Добавлено через 20 минут
Я не вдавался в подробности в твоем примере. Но есть некоторые моменты:
1) Конец строки должна быть точка - но можно ее проверить как я писал в своем.

Добавлено через 7 минут
Вообще остальное похоже на правду, но точно сказать не могу. Прогони по примерам. Поставь пару пробелов в начале, поставь несколько в конце, поставь побольше пробелов между словами.
0
19.06.2012, 23:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2012, 23:26
Помогаю со студенческими работами здесь

если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы "."
Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина...

Если длина строка больше 80 символов, копировать в новый файл по 80 символов
Условие: написать программу копирования текста при условии: 1. если длина строка больше 80...

Если длина строки больше заданной, отбросить первые символы, иначе в ее начало добавить символы "."
4.Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина...

Если длина строки больше заданной, отбросить первые символы, иначе в её начало добавить символы "."
Дано целое число N (N&gt;0) и строка S.Преобразовать строку S в строку длины N следующим образом:если...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru