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

Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
CHUCKe
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 25
05.11.2010, 23:22     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова #1
1.Дан текст, состоящий из предложений. Ввод текста осуществляется в
несколько строк (не более 20). Признак завершения ввода – ввод пустой
строки. Предложения в тексте могут начинаться на одной строке, а
заканчиваться на другой (максимальная длина предложения – 70 символов).
Записать текст так, чтобы каждое предложение начиналось с новой строки.
Упорядочить предложения по их длине и вывести на экран.

2.Дана строка – предложение, содержащая целые числа и слова. Сформировать
две строки, первая из которых содержит только числа из исходной строки, а
вторая – только слова.(не использовать String.h и stdlib.h)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2010, 23:22     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова
Посмотрите здесь:

C++ Даны две символьные строки, состоящие только из цифр
C++ задача на строки на С.Даны 2 слова.Напечатать только те буквы слов,которые встречаются в обоих словах только один раз.
Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие C++
C++ Файл содержит числа и слова. Сформулировать файл, содержащий только числа.
C++ удалить из строки только те слова, которые состоят только из латинских букв
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
06.11.2010, 03:03     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова #2
ctype.h

isdigit(c) - проверяет, является ли c десятичной цифрой
isalpha(c) - проверяет, является ли c буквой a-zA-Z

Добавлено через 1 минуту
для текста из первой задачи видимо свою функцию ввода предложения надо, если это не C++
что-то типа

C
1
int get_sentence(char s[], size_t maxlen);
C
1
int get_sentence(char s[], size_t maxlen, FILE *ifp);
C
1
int get_sentence(char s[], const char *delim, size_t maxlen, FILE *ifp);
CHUCKe
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 25
07.11.2010, 00:50  [ТС]     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова #3
там в условии не написано но во второй задаче пробелы вводятся или нет?

Добавлено через 1 час 31 минуту
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
int main()
{
    char s[50];
    int i=0,j=0,j1=0;
    char s1[50]="",s2[50]="";//äëÿ õóäøåãî ñëó÷Г*Гї
    cout<<"Insert string"<<endl;
    cin>>s;
    while (i<50)
    {
        if (isdigit(s[i]))
          {j++;
          s1[j]=s[i];}
          
        if (s[i]=' ')
        {
            j1++;
            s2[j1]=s[i];
        }
        if (isalpha(s[i]));
        {
            j1++;
            s2[j1]=s[i];
        }
        i++;
    }
    cout<<"String one"<<endl;
    cout<<s1;
    cout<<endl;
    cout<<"String second"<<endl;
    cout<<s2;
}
вот что получилось для второй.но рабоатет неправильно

Добавлено через 3 часа 50 минут
Цитата Сообщение от accept Посмотреть сообщение
если это не C++
то есть?

Добавлено через 2 часа 28 минут
help
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
07.11.2010, 01:14     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова #4
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
#include <iostream>
#include<ctype.h>
using namespace std;
 
int main()
{
        char s[50];
        int i=0,j=0,j1=0;
        char s1[50]="",s2[50]="";//для худшего случая
        cout<<"Insert string"<<endl;
        cin >> s;
        while (i<strlen(s))
        {
                if (isdigit(s[i]))
                  { s1[j]=s[i];j++;}
                  
       // if (s[i]=' ')
        //{ s2[j1]=s[i];j1++ ;}
 
        if (isalpha(s[i]))
        { s2[j1]=s[i];j1++; }
        i++;
        }
        cout<<"String one"<<endl;
        cout<<s1;
        cout<<endl;
        cout<<"String second"<<endl;
        cout<<s2;
        
    system("pause");
}
CHUCKe
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 25
07.11.2010, 01:28  [ТС]     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова #5
можно ли по другому узнать длину строки не через strlen?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.11.2010, 01:30     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова #6
а чем вам strlen не угодил? через sizeof
CHUCKe
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 25
07.11.2010, 01:32  [ТС]     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова #7
Цитата Сообщение от Maxwe11 Посмотреть сообщение
а чем вам strlen не угодил? через sizeof
дело в том что strlen в си содержится в String.h
а её по улсовию использовать нелья
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,216
Завершенные тесты: 1
07.11.2010, 01:52     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова #8
Цитата Сообщение от Maxwe11 Посмотреть сообщение
через sizeof
Но только, если строка не адресуется через указатель. Например:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
int main()
{
    char hello[] = "Hello world!";
    char * ptr = hello;
    
    std::cout << sizeof(hello) << std::endl; 
    std::cout << sizeof(ptr) << std::endl; 
    return 0;
}
И если строка занимает весь массив:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <cstring>
#include <iostream>
 
int main()
{
    char bigbuff[4096];
    char hello[] = "Hello world!";
 
    strcpy(bigbuff, hello);
 
    std::cout << sizeof(hello) << std::endl; 
    std::cout << sizeof(bigbuff) << std::endl; 
 
    return 0;
}
Добавлено через 2 минуты
CHUCKe, дык на С нужно или на С++?

Добавлено через 2 минуты
Если на С, то имплиментируй свой вариант strlen() и все путем

Добавлено через 6 минут
Например, вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
size_t myStrLen(const char * str)
{
    const char * ptr = str;
    while (*ptr) ++ptr;
    return (ptr - str);
}
 
int main()
{
    char hello[] = "Hello world!";
    std::cout << myStrLen(hello) << std::endl; 
 
    return 0;
}
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.11.2010, 04:02     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова #9
Цитата Сообщение от CHUCKe Посмотреть сообщение
то есть?
в C++ есть geline(), которая принимает разделитель строк и туда можно передать точку
CHUCKe
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 25
17.11.2010, 23:48  [ТС]     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова #10
первую...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2010, 22:27     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова
Еще ссылки по теме:

C++ Для заданной строки построить строку, в которой содержаться только буквы латинского алфавита исходной строки
Найти слова, в которых первая буква присутствует только один раз, и слова капслоком C++
Сформировать из данного числа другое число, которое содержит только четные цифры (рекурсия) C++

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

Или воспользуйтесь поиском по форуму:
CHUCKe
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 25
19.11.2010, 22:27  [ТС]     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова #11
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
#include <iostream>
#include <stdio.h>
#include <string.h>
 
 
int main()
    {
        char s[20][70];
        int count=0;//÷òîáû ГіГ§Г*Г*ГІГј êîë-ГўГ® ñòðîê
        for(int i=0;i<20;i++,count++)//Г*ГҐ áîëüøå
        {
         gets(s[i]);
         if(strcmp(s[i],"") == 0) break;//åñëè ââåëè ГЇГіГ±ГІГіГѕ ñòðîêó ГІГ® ïðåâðГ*ГІГј öèêë
        }
        cout<<endl;
        for(int i=0;i<count;i++) 
        puts(s[i]);//ïîñìîòðåòü Г*Г* ðåçóëòГ*ГІ
        
        int arr[10];//äëèГ*Г» ïðåäëîæåГ*ГЁГ©
        
        i=0;
        int length=0;
        int k=-1;
        int lem=0;
        for (int i=0;i<count;i++)
        {
          k++;
          for(int j=0;j<strlen(s[i]);j++)
          {
            if s[i][j]='.'
            length++;
          }
           arr[k]=length;//Г§Г*ГЇГЁГёГҐГ¬ äëèГ*Гі ïðåäëîæåГ*ГЁГї Гў Г¬Г*Г±Г±ГЁГў
           lem++;//êîë-ГўГ® ïðåäëîæåГ*ГЁГ©
           length=0;
        }
        //òåïåðü Гў Г¬Г*Г±Г±ГЁГўГҐ õðГ*Г*ГїГІГ±Гї äëèГ*Г» ñòðîê
        //lem-×èñëî ïðåäëîæåГ*ГЁГ© Г* ñëåäîâГ*òåëüГ*Г® ГЁ ñòðîê
        char s1[lem][100];
        int l=0;
        innt i=0;
            //ñîçäГ*ГҐГ¬ Г*îâûé ГІГҐГЄГ±ГІ
помогите с алгоритмом создания нового текста с предложениями в каждой строке...
сортировку я знаю как сделать а ввот текста организовал.но не знаю как разбить текст на предложения....

Добавлено через 18 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int flag=1;
while(flag)
    {
    flag = 0;
    for(int i = 0;i<count-1;i++)
      if(strcmp(strs[i],strs[i+1])>0)
        {
        char buffer[100];
        strcpy(buffer,strs[i]);
        strcpy(strs[i],strs[i+1]);
        strcpy(strs[i+1],buffer);
        flag = 1;
      } 
  }
вот сортировка.
помогите с разбивкой....

Добавлено через 13 минут
Help

Добавлено через 1 час 9 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for(int i=0;i<20;i++,count++)//Г*ГҐ áîëüøå
        {
         gets(s[i]);
             while((s[i][j]!='.')&&(j<strlen(s[i]))
             {
                s1[k][k1]=s[i][j];//ñîçäГ*Г*ГЁГҐ ñòðîêè
                if (s[i][j]=='.')//åñëè Г*Г*éäåГ*Г* òî÷êГ* ïåðåõîäèì Г*Г* Г*îâóþ ñòðîêó
                      k++;//Г*Г* Г*îâóþ ñòðîêó ïåðåõîäèì
                 j++; 
                 k1++;
             }
             k1=0;
         if(strcmp(s[i],"") == 0) break;//åñëè ââåëè ГЇГіГ±ГІГіГѕ ñòðîêó ГІГ® ïðåâðГ*ГІГј öèêë
         }
на что то в while ругается

Добавлено через 8 минут
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
#include <iostream>
#include <stdio.h>
#include <string.h>
 
 
int main()
    {
        char s[20][70];
        char s1[10][100];
        int count=0;//÷òîáû ГіГ§Г*Г*ГІГј êîë-ГўГ® ñòðîê
        int k=0,k1=0,j=0;
        bool f=false;
        
        for(int i=0;i<20;i++,count++)//Г*ГҐ áîëüøå
        {
             gets(s[i]);
             while((s[i][j]!='.')&&(j<strlen(s[i])))
             {
                s1[k][k1]=s[i][j];//ñîçäГ*Г*ГЁГҐ ñòðîêè
                if (s[i][j]=='.')//åñëè Г*Г*éäåГ*Г* òî÷êГ* ïåðåõîäèì Г*Г* Г*îâóþ ñòðîêó
                      k++;//Г*Г* Г*îâóþ ñòðîêó ïåðåõîäèì
                 j++; 
                 k1++;
             }
             k1=0;
         if(strcmp(s[i],"") == 0) break;//åñëè ââåëè ГЇГіГ±ГІГіГѕ ñòðîêó ГІГ® ïðåâðГ*ГІГј öèêë
         }
         
         for(int i=0;i<=k;i++)
          puts(s1[i]);
          
       int flag = 1;
       while(flag)
        {
        flag = 0;
       for(int i = 0;i<k-1;i++)
       if(strcmp(s1[i],s1[i+1])>0)
        {
        char buffer[81];
        strcpy(buffer,s1[i]);
        strcpy(s1[i],s1[i+1]);
        strcpy(s1[i+1],buffer);
        flag = 1;
       } 
       } 
       
       for(int i=0;i<=k;i++)
          puts(s1[i]);
       
}
вот что получилось.проверьте плз!

Добавлено через 20 часов 28 минут
Решил задачу сегодня утром.тему можно прикрыть
Yandex
Объявления
19.11.2010, 22:27     Сформировать две строки - первая содержит только числа из исходной строки, а вторая – только слова
Ответ Создать тему
Опции темы

Текущее время: 14:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru