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

Нахождение самого длинного слова - C++

Восстановить пароль Регистрация
 
Mi5aka
Сообщений: n/a
25.02.2013, 17:17     Нахождение самого длинного слова #1
Появилась проблема, пишет несколько ошибок. В sl должен попадать текст, до этого попадал, сейчас не знаю, запуталась Т____Т

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "stdafx.h"
#include <stdlib.h>
#include "conio.h"
#include <clocale>
#include <string.h>
#include <windows.h>
struct str
    {
     char slv[256];
    };
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    struct str *s;
    int m,i,j,z,y, max;
    char menu;
    char sl[],sl1[256],p[256];
        do{
    printf("1 - считать из файла\n 2 - ввести текст вручную\n 3 - найти наибольшее слово\n 4 - вывод результата\n 0 - выход\n");
    menu = getch();
    switch(menu)
    {
        case '1': 
        {
            FILE * in;
            in=fopen ("input.txt", "r"); 
            m=0;
            while (!feof(in))
                {
                    fgets(p, 256, in);
                    m++;
                }
             s = new str [m];
            fclose(in);
            break;
        }
 
        case '2':
            {
                printf ("Введите текст ");
                for (i=0; i<m; i++)
                {
                    gets(s[i].slv);
                }
        break;
        }
 
        case '3':
        {
char seps[] = " .,!\n";
 
int slova = 0;
sl[slova] = strtok( s[i].slv, seps);
while( sl[slova] != NULL )
   {
      printf( "%s\n", sl[slova] );
       slova++;
      sl[slova] = strtok( NULL, seps);
   }
        z=0;
        max=0;
        for (i=0; i<m; i++)
            {
                            if(max<strlen(sl))
                            {
                                max=strlen(sl);
                                for(y=0;y<strlen(sl1);y++) sl1[y]=NULL;
                                for(y=0;y<strlen(sl);y++) sl1[y]=sl[y];
                            }
                            z=0;        
                            for(y=0;y<strlen(sl);y++) sl[y]=NULL;
                        }
                }
        
        
                break;
        }
    case '4':
        {
            FILE *out;
                out=fopen ("output.txt", "w");
            fputs(sl1, out);
            printf ("%s", sl1);
            fclose(out);
            break;
        }
    
        } while(menu!='0');
        return 0;
}
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2013, 17:17     Нахождение самого длинного слова
Посмотрите здесь:

Дана строка содержащая текст. Найти длину самого короткого и самого длинного слова. C++
Дана строка, содержащая текст. Найти длину самого короткого и самого длинного слова. C++
C++ Найти длину самого короткого слова и самого длинного слова в строке
Найти длину самого короткого и самого длинного слова. C++
Строки (Найти длину самого короткого и самого длинного слова, а также сами эти слова) C++
C++ Найти длину самого короткого и самого длинного слова, а также сами эти слова
Разработать программу, осуществляющую поиск самого короткого и самого длинного слова во вводимом тексте C++
Нахождение самого длинного слова в строке C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
olya7
476 / 293 / 91
Регистрация: 18.02.2013
Сообщений: 684
25.02.2013, 18:19     Нахождение самого длинного слова #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
49
50
51
#include <stdio.h>
#include <iostream.h>
#include <string.h>
 
int main()   
{
    char st[100],s[500];
    struct str
    {
    char slv[256];
     int dlinna;
    } sl[500];
 
 gets(st);
 strcat(st," ");
  int n=strlen(st);
        if (n<2) return 1;
    int k=0,j=0,i;
    s[0]='\0';
  
   for (i=0; i<n; i++)
   { 
       sl[j].slv[0]='\0';
        
       if ((st[i] != ' ')&& (st[i] != '.') && (st[i] != ',') && (st[i] != '?')&&( st[i] != '!') )
       {
           s[k]=st[i];
           s[k+1]='\0';
           k++;
       }
       else
       {
           if (strlen(s)>=1) {strcpy(sl[j].slv,s);sl[j].dlinna=strlen(s);}
           s[0]='\0';
           j++;
           k=0;
            
       }
   }
       cout << "Poluchennii mass"<<endl;
       for (i=0;i<j;i++)
           puts(sl[i].slv);
       int max=0,max_i=0;
 
       for (i=0;i<j;i++)
           if(max<sl[i].dlinna) { max = sl[i].dlinna; max_i=i;}
           cout << sl[max_i].slv << " "<<  sl[max_i].dlinna; 
 
 
return 1;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
25.02.2013, 20:45     Нахождение самого длинного слова #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
 
typedef std::istream_iterator<std::string> input_string;
 
int main()
{
    std::string text;
    std::getline(std::cin, text);
    std::istringstream ist(text);
    std::cout << *std::max_element(input_string(ist), input_string(),
        [](const std::string &lhs, const std::string &rhs)
        { return lhs.length() > rhs.length(); } ) << std::endl;
}
Yandex
Объявления
25.02.2013, 20:45     Нахождение самого длинного слова
Ответ Создать тему
Опции темы

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