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

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

05.11.2010, 23:22. Показов 2966. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1.Дан текст, состоящий из предложений. Ввод текста осуществляется в
несколько строк (не более 20). Признак завершения ввода – ввод пустой
строки. Предложения в тексте могут начинаться на одной строке, а
заканчиваться на другой (максимальная длина предложения – 70 символов).
Записать текст так, чтобы каждое предложение начиналось с новой строки.
Упорядочить предложения по их длине и вывести на экран.

2.Дана строка – предложение, содержащая целые числа и слова. Сформировать
две строки, первая из которых содержит только числа из исходной строки, а
вторая – только слова.(не использовать String.h и stdlib.h)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2010, 23:22
Ответы с готовыми решениями:

Для заданной строки построить строку, в которой содержаться только буквы латинского алфавита исходной строки
Помогите пожалуйста,я уже не знаю что делать,не получается и все

Удалить из строки только те слова, которые состоят только из латинских букв
Надо удалить из строки только те слова, которые состоят только из латинских букв. Помогите,...

Удалить из каждого слова исходной строки две последние буквы
Пожалуйста помогите, дана строка символов. Удалить из каждого слова исходной строки две последние...

Сформировать из данного числа другое число, которое содержит только четные цифры (рекурсия)
Помогите описать рекурсивную подпрограмму, формирующую из данного натурального числа другое число,...

10
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
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);
1
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
0
246 / 178 / 47
Регистрация: 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");
}
1
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 25
07.11.2010, 01:28  [ТС] 5
можно ли по другому узнать длину строки не через strlen?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.11.2010, 01:30 6
а чем вам strlen не угодил? через sizeof
1
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 25
07.11.2010, 01:32  [ТС] 7
Цитата Сообщение от Maxwe11 Посмотреть сообщение
а чем вам strlen не угодил? через sizeof
дело в том что strlen в си содержится в String.h
а её по улсовию использовать нелья
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,888
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;
}
2
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
07.11.2010, 04:02 9
Цитата Сообщение от CHUCKe Посмотреть сообщение
то есть?
в C++ есть geline(), которая принимает разделитель строк и туда можно передать точку
2
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 25
17.11.2010, 23:48  [ТС] 10
первую...
0
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 минут
Решил задачу сегодня утром.тему можно прикрыть
0
19.11.2010, 22:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2010, 22:27
Помогаю со студенческими работами здесь

Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка содер-жится в ней
Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой...

Сформировать строку, удалив из каждого слова исходной строки повторяющиеся в нем буквы
Задание: Для решения задачи вам нужно ввести строки с помощью функций gets или fgets, разбить...

Получить две новые строки, одна из которых содержит только буквы, другая только цифры
добрый вечер! не могли бы вы помочь с двумя задачками? :) 1) Дана строка, состоящая из букв и...

Множества: получить две новые строки, одна из которых содержит только буквы другая - только цифры
дана строка состоящая из букв и цифр. получить две новые строки, одна из которых содержит только...


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

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