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

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

Войти
Регистрация
Восстановить пароль
 
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
#1

Строка - C++

26.01.2010, 09:47. Просмотров 507. Ответов 3
Метки нет (Все метки)

Дана строка-предложение на русском языке. Вывести самое короткое слово в предложении. Если таких слов несколько-то вывести последнее из них. Словом считать набор символов, не содержащий пробелов, знаков препинания и ограниченный пробелами, знаками препинания или началом/ концом строки.

надо на си. Строку вводить с клавиатуры.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2010, 09:47     Строка
Посмотрите здесь:

C++ строка в c++
C++ строка
строка C++
C++ строка
Создать класс строка и производный класс битовая строка, не работает переопределение операций C++
Строка C++
строка C++
Строка string и строка char C++
Даны строка S, символ C и строка S0. Необходимо после каждого вхождения символа C в строку S вставить строку S0 C++
Преобразование строка-число-строка C++
C++ Дана строка. Подсчитать сколько раз первая строка входит во вторую
Почему строка, считанная из файла и такая же строка в программе не равны, хотя они, вроде бы, одинаковы? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1234 / 772 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
26.01.2010, 10:47     Строка #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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
#define H 6
#define W 6
 
void main(){
char str[] = "V CHAFD LKR PP KK FXJJ";
int count  = 0;                //счётчик символов в слове
unsigned int posStr = 0;       //позиция в строке
 
unsigned lenght = strlen(str);          //длинна строки
 
 
char matrix[H][W] = {0};
//Считываем все слова в матрицу
int i =0 ,j =0;
unsigned int p = 0;
for(i=0;i<H;i++){
    p=posStr;
    for(j=0;p<strlen(str);j++,p++){
            if(str[p]==' '){
            posStr=p;
            posStr++;
            p = lenght;
            continue;
            }
            if(str[p]!=' ')matrix[i][j]=str[p];  //записываем в строку
        
    }
 
    
}
 
 
//Выводим собранное
for(int u=0;u<H;u++){
    for(int k=0;k<W;k++){
printf(" ");printf("%c",matrix[u][k]);
 
    }
printf("\n");
}
 
 
 
}
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
26.01.2010, 10:55  [ТС]     Строка #3
Надо в общем виде с гетс. Идей вообще нету(
Genius Ignat
1234 / 772 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
26.01.2010, 11:52     Строка #4
Попробуй в gets сам это не сложно, только чтоб в строке не более 20 символов.
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
#define H 6
#define W 6
 
void main(){
char str[] = "V CHAFD LKR PP KK FXJJ";
 
 
int count  = 0;                //счётчик символов в слове
unsigned int posStr = 0;       //позиция в строке
 
unsigned lenght = strlen(str);          //длинна строки
 
 
char matrix[H][W] = {0};
//Считываем всё слово в матрицу
int i =0 ,j =0;
unsigned int p = 0;
for(i=0;i<H;i++){
    p=posStr;
    for(j=0;p<strlen(str);j++,p++){
            if(str[p]==' '){
            posStr=p;
            posStr++;
            p = lenght;
            continue;
            }
            if(str[p]!=' ')matrix[i][j]=str[p];  //записываем в строку
        
    }
 
    
}
//Выводим собранное
for(int u=0;u<H;u++){
    for(int k=0;k<W;k++){
printf(" ");printf("%c",matrix[u][k]);
 
    }
printf("\n");
}
 
int mcount = 2;  //максимальное кол-во в строке
int posMin = 0;      //позиция строки с минимальным кол-вом символов
 
//Еще самое короткое слова в матрице
for(i=0;i<H;i++){
    for(j=0;j<W;j++){
        if(matrix[i][j]!=' '){
        count++;
        }
 
    }
if(count<mcount){
mcount = count;       //получаем максимальное кол-во
posMin = i;
}
 
}
//выводим строку через матрицу
for(int r = 0;r<W;r++)
printf("%c",matrix[posMin][r]);
 
 
}
Добавлено через 17 минут
Сейчас тебе c gets и pust будет

Добавлено через 13 минут
Вот кое что
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
#define H 10
#define W 10
 
void main(){
char str[26];
 
puts("Input string\t");        //введи строку максимум 90 символов
gets(str);                     //получаем в строку
 
 
int count  = 0;                //счётчик символов в слове
unsigned int posStr = 0;       //позиция в строке
unsigned lenght = strlen(str);          //длинна строки
char matrix[H][W] = {0};
//Считываем всё слово в матрицу
int i =0 ,j =0;
unsigned int p = 0;
for(i=0;i<H;i++){
    p=posStr;
    for(j=0;p<strlen(str);j++,p++){
            if(str[p]==' '){
            posStr=p;
            posStr++;
            p = lenght;
            matrix[i][j] ='\0';
            continue;
            }
            if(str[p]!=' ')matrix[i][j]=str[p];  //записываем в строку
        
    }
 
    
}
//Выводим собранное
for(int u=0;u<H;u++){
    for(int k=0;k<W;k++){
printf(" ");printf("%c",matrix[u][k]);
 
    }
printf("\n");
}
 
int mcount = 1000;   //максимальное кол-во в строке
int posMin = 0;      //позиция строки с минимальным кол-вом символов
 
//Еще самое короткое слова в матрице
for(i=0;i<H;i++){
    for(j=0;j<W;j++){
        if(matrix[i][j]!='\0'){
        count++;
        }
 
    }
 
if(count<=mcount){
mcount = count;       //получаем максимальное кол-во
posMin = i;
}
count = 0;
}
//выводим строку через матрицу
for(int r = 0;r<W;r++)
printf("%c",matrix[posMin][r]);
 
}
Добавлено через 13 минут
Длинна одного слова не должна превышать 10, количество слов не более 10
Если хочешь по другому по меняй размеры матрицы.
Yandex
Объявления
26.01.2010, 11:52     Строка
Ответ Создать тему
Опции темы

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