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

Найти самое короткое слово в строке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Rinosky
 Аватар для Rinosky
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
22.12.2013, 19:14     Найти самое короткое слово в строке #1
(26) : warning C4060: оператор switch не содержит метку 'case' или 'default'

Задание: Найти самое короткое слово в строке.

Не понимаю что ему нужно от меня, вроде правильно задал. Поправьте пожалуйста, и объясните что к чему, буду благодарен!

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 <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
void menu()
{
int choise
cout<<"\nНажмите 1 для ввода строки\n";
cout<<"\nНажмите 2 для начала программы\n";
cout<<"\nНажмите 3 для вывода короткого слова\n";
cout<<"\nНажмите 4 для выхода из программы\n";
cin>>choise;
return choise;
}
void main()
 
{   setlocale(LC_ALL, "Russian"); //  русский
    int choise;
    int shortest;
    int n=0,i=0, start=0;
    char *stroka= new char;
    do
    {
        switch (menu());
        {
        case 1:{
                cout<<"Введите строку"<<endl;
                gets(stroka);
                break;
               }
        case 2:
            {
            int shortest=strlen(stroka); //для переменная длинна
            while(n<=int(strlen(stroka)))
                {
                    if((!isspace(stroka[n]))&&(stroka[n]!='')) //если символ не пробел и не конец строки
                    {
                        i++;    //то увеличиваем длину
                    }
                    else    //пробел
                        {
                        if(i<shortest) //если текущая длина слова меньше переменной, то записать в переменную длину
                            {
                            shortest=i;
                            start=n; //запись первой буквы короткого слова
                            }
                        i=0;
                        }
                n++;
                }
            break;
            }
        case 3:{
                cout<<endl<<"Самое короткое слово"; //вывод
                for(int i=0;i<shortest;i++)
                {
                    cout<<stroka[start-1];
                    start++;
                }
                system("pause");
                break;
               }
        
        while (choise!=4)
            return 0;
        }
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Belfegor
Ghost
 Аватар для Belfegor
172 / 172 / 6
Регистрация: 16.09.2012
Сообщений: 524
22.12.2013, 19:16     Найти самое короткое слово в строке #2
Цитата Сообщение от Rinosky Посмотреть сообщение
switch (menu());
; - уберите
Rinosky
 Аватар для Rinosky
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
22.12.2013, 19:47  [ТС]     Найти самое короткое слово в строке #3
Цитата Сообщение от Belfegor Посмотреть сообщение
; - уберите
1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(25) : error C2450: недопустимое выражение типа 'void' в операторе switch
1> Выражение, имеющее тип void, нельзя преобразовать в другой тип
1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(37) : error C2137: пустая символьная константа
1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(66) : error C2562: main: функция типа 'void', возвращающая значение ?
1> c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(16): см. объявление 'main'
1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(69) : error C2059: синтаксическая ошибка: }

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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
void menu()
{
int choise;
cout<<"\nНажмите 1 для ввода строки\n";
cout<<"\nНажмите 2 для начала программы\n";
cout<<"\nНажмите 3 для вывода короткого слова\n";
cout<<"\nНажмите 4 для выхода из программы\n";
cin>>choise;
}
void main()
 
{   setlocale(LC_ALL, "Russian"); //  русский
    int choise;
    int shortest;
    int n=0,i=0, start=0;
    char *stroka= new char;
    do
    {
        switch (menu())
        {
        case 1:{
                cout<<"Введите строку"<<endl;
                gets(stroka);
                break;
               }
        case 2:
            {
            int shortest=strlen(stroka); //для переменная длинна
            while(n<=int(strlen(stroka)))
                {
                    if((!isspace(stroka[n]))&&(stroka[n]!='')) //если символ не пробел и не конец строки
                    {
                        i++;    //то увеличиваем длину
                    }
                    else    //пробел
                        {
                        if(i<shortest) //если текущая длина слова меньше переменной, то записать в переменную длину
                            {
                            shortest=i;
                            start=n; //запись первой буквы короткого слова
                            }
                        i=0;
                        }
                n++;
                }
            break;
            }
        case 3:{
                cout<<endl<<"Самое короткое слово"; //вывод
                for(int i=0;i<shortest;i++)
                {
                    cout<<stroka[start-1];
                    start++;
                }
                system("pause");
                break;
               }
        
        while (choise!=4)
            return 0;
        }
    }
}
Добавлено через 24 минуты
помогите с кодом, добавил только пару ошибок своим вмешательством, вернулся к ^
Warezovvv
 Аватар для Warezovvv
9 / 9 / 2
Регистрация: 09.12.2012
Сообщений: 219
22.12.2013, 20:21     Найти самое короткое слово в строке #4
menu() должна возращать int
Rinosky
 Аватар для Rinosky
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
22.12.2013, 20:27  [ТС]     Найти самое короткое слово в строке #5
Цитата Сообщение от Warezovvv Посмотреть сообщение
menu() должна возращать int
Можете исправить? Пытался исправить, сделал еще хуже.
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,339
22.12.2013, 20:28     Найти самое короткое слово в строке #6
C++
1
2
3
4
5
6
7
8
9
10
int menu()
{
int choise;
cout<<"\nНажмите 1 для ввода строки\n";
cout<<"\nНажмите 2 для начала программы\n";
cout<<"\nНажмите 3 для вывода короткого слова\n";
cout<<"\nНажмите 4 для выхода из программы\n";
cin>>choise;
return choise;
}
Warezovvv
 Аватар для Warezovvv
9 / 9 / 2
Регистрация: 09.12.2012
Сообщений: 219
22.12.2013, 20:30     Найти самое короткое слово в строке #7
Цитата Сообщение от KOPOJI Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
int menu()
{
int choise;
cout<<"\nНажмите 1 для ввода строки\n";
cout<<"\nНажмите 2 для начала программы\n";
cout<<"\nНажмите 3 для вывода короткого слова\n";
cout<<"\nНажмите 4 для выхода из программы\n";
cin>>choise;
return choise;
}
Не обратил внимания что функция void возвращает int.
Увидел что void, сразу написал решение.
Rinosky
 Аватар для Rinosky
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
22.12.2013, 23:29  [ТС]     Найти самое короткое слово в строке #8
Цитата Сообщение от KOPOJI Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
int menu()
{
int choise;
cout<<"\nНажмите 1 для ввода строки\n";
cout<<"\nНажмите 2 для начала программы\n";
cout<<"\nНажмите 3 для вывода короткого слова\n";
cout<<"\nНажмите 4 для выхода из программы\n";
cin>>choise;
return choise;
}
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 <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
int menu()
{
int choise;
cout<<"\nНажмите 1 для ввода строки\n";
cout<<"\nНажмите 2 для начала программы\n";
cout<<"\nНажмите 3 для вывода короткого слова\n";
cout<<"\nНажмите 4 для выхода из программы\n";
cin>>choise;
return choise;
}
void main()
 
{   setlocale(LC_ALL, "Russian"); //  русский
    int choise;
    int shortest;
    int n=0,i=0, start=0;
    char *stroka= new char;
    do
    {
        switch (menu())
        {
        case 1:{
                cout<<"Введите строку"<<endl;
                gets_s(stroka);
                break;
               }
        case 2:
            {
            int shortest=strlen(stroka); //для переменная длинна
            while(n<=int(strlen(stroka)))
                {
                    if((!isspace(stroka[n]))&&(stroka[n]!='')) //если символ не пробел и не конец строки
                    {
                        i++;    //то увеличиваем длину
                    }
                    else    //пробел
                        {
                        if(i<shortest) //если текущая длина слова меньше переменной, то записать в переменную длину
                            {
                            shortest=i;
                            start=n; //запись первой буквы короткого слова
                            }
                        i=0;
                        }
                n++;
                }
            break;
            }
        case 3:{
                cout<<endl<<"Самое короткое слово"; //вывод
                for(int i=0;i<shortest;i++)
                {
                    cout<<stroka[start-1];
                    start++;
                }
                system("pause");
                break;
               }
        
        while (choise!=4)
            return 0;
        }
    }
}

1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(30) : error C2660: gets_s: функция не принимает 1 аргументов
1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(38) : error C2137: пустая символьная константа
1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(67) : error C2562: main: функция типа 'void', возвращающая значение
1> c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(17): см. объявление 'main'
1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(70) : error C2059: синтаксическая ошибка: }

Ничего не пойму, почему она пустая?
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,339
22.12.2013, 23:33     Найти самое короткое слово в строке #9
Цитата Сообщение от Rinosky Посмотреть сообщение
gets_s
а что это за функция? Может, gets, а не gets_s ?
Цитата Сообщение от Rinosky Посмотреть сообщение
почему она пустая?
потому что неверное имя функции gets.
Rinosky
 Аватар для Rinosky
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
22.12.2013, 23:34  [ТС]     Найти самое короткое слово в строке #10
apd: забыл поставить пробел между апострофами
C++
1
if((!isspace(stroka[n]))&&(stroka[n]!=''))
-1 трабл xD

1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(30) : error C2660: gets_s: функция не принимает 1 аргументов
1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(69) : error C2562: main: функция типа 'void', возвращающая значение
1> c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(17): см. объявление 'main'
1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(71) : error C2059: синтаксическая ошибка: }
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,339
22.12.2013, 23:36     Найти самое короткое слово в строке #11
а, это же VS..

Добавлено через 1 минуту
у gets_s два аргумента
Rinosky
 Аватар для Rinosky
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
22.12.2013, 23:39  [ТС]     Найти самое короткое слово в строке #12
Цитата Сообщение от KOPOJI Посмотреть сообщение
а что это за функция? Может, gets, а не gets_s ?

потому что неверное имя функции gets.


1>c:\users\kostya\documents\visual studio 2008\projects\lab66\lab66\lab66.cpp(31) : warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

C++
1
2
3
4
5
6
case 1:                 
                           {
                cout<<"Введите строку"<<endl;
                gets(stroka);
                break;
               }
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,339
22.12.2013, 23:41     Найти самое короткое слово в строке #13
ну да, можно и так.. добавьте тогда в начале
C
1
#define _CRT_SECURE_NO_WARNINGS
Добавлено через 28 секунд

Не по теме:

просто я с vs никогда не работал, забыл, что там есть "безопасные" функции с постфиксом _s..

Rinosky
 Аватар для Rinosky
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
22.12.2013, 23:48  [ТС]     Найти самое короткое слово в строке #14
Цитата Сообщение от KOPOJI Посмотреть сообщение
ну да, можно и так.. добавьте тогда в начале
C
1
#define _CRT_SECURE_NO_WARNINGS
Добавлено через 28 секунд

Не по теме:

просто я с vs никогда не работал, забыл, что там есть "безопасные" функции с постфиксом _s..

Откомпилировать, запустилось, но результат всё равно не положительный D:

Найти самое короткое слово в строке
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2013, 00:19     Найти самое короткое слово в строке
Еще ссылки по теме:

C++ Напечатать самое длинное и самое короткое слово в строке
C++ Найти самое короткое и самое длинное слово в строке
C++ Напечатать самое длинное и самое короткое слово в строке

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

Или воспользуйтесь поиском по форуму:
Warezovvv
 Аватар для Warezovvv
9 / 9 / 2
Регистрация: 09.12.2012
Сообщений: 219
23.12.2013, 00:19     Найти самое короткое слово в строке #15
Зачем вы в мэйне еще choise обьявили? не передали? и в функции обьявили еще раз. и не инициализировали.
Yandex
Объявления
23.12.2013, 00:19     Найти самое короткое слово в строке
Ответ Создать тему
Опции темы

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