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

Вывести самое длинное слово

15.01.2009, 02:18. Показов 2241. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1) Вывести самое длинное слово

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
#include<stdio.h>
#include<conio.h>
void funk(char s[255], int max, int min);
int main()
{
clrscr();
char s[255]={"bmp docx tochtonuzhno proga simbol random ."};
int km; //konec massiva
int i=0;
int nl=0, kl=0; //nachalo i konec leksem
char dl[255]; //dlinaya leksema
while(1)
    {
    if(s[i]=='.')
        {
        km=i-1;
        break;
        }
    i++;}
for(i=0; i<=km; i++)
    {
    if(s[i]==' ')
        {
        kl=i-1;
        funk(s, kl, nl);
        nl=kl+2;
        }
getch();
}
 
void funk(char s[255], int kl, int nl)
{
int x=0;
for(int i=nl; i<=kl; i++)
    if(kl-nl>x)
        {
        x=kl-nl;
        dl=s[i];
        }
    printf("%c", dl);
}


2) столбцы содержащие 0(вроде правильно считает)
номер строки с самой длинной серией одинаковых элементов (не пойму как реализовать)

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
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main()
{
clrscr();
int a[7][8]={    {32,65,45,97,67,16,5,17},
        {23,54,68,75,11,49,87,3},
        {0,1,56,7,68,21,87,9},
        {5,48,75,21,50,76,0, 66},
        {54,78,75,46,55,0,0,33},
        {3,56,0,56,97,56,56,88},
        {54,6,5,0,86,75,4,17}};
int i,j, m,n; //massiv index
int s=0; //stolbci s 0
int p; //kol-vo odinakovix elementov v stroke
int t=0, x, y, z;
int NS; //nomer stroki
for(j=0; j<8; j++)
    {
    for(i=0; i<7; i++)
        {
        if(a[i][j]==0)
        t=t+1;
        if(t>=1)
            {
            t=0;
            s++;
            break;
            };
        };
    };
for(i=0; i<7; i++)
    {
    for(j=0; j<8; j++)
        {
        if(a[x][y]==a[i][j]) p++;
        if(p>z) z=p;
        p=0;
        }
    }
 
printf("s=%i \n", s);
printf("z=%i", z);
getch();
}
Заранее спасибо!

Добавлено через 50 минут 50 секунд
помогите, нужно срочно, компилятор указывает что ошибки в функции, но как исправит не пойму

C++
1
2
3
4
5
6
7
8
9
10
11
void funk(char s[255], int kl, int nl)
{
int x=0;
for(int i=nl; i<=kl; i++)
    if(kl-nl>x)
        {
        x=kl-nl;
        dl=s[i];
        }
    printf("%c", dl);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2009, 02:18
Ответы с готовыми решениями:

Вывести строку по словам, найти самое длинное и самое короткое слово
• Дана строка S. Вивисты его послов и сказать которое дольше и которое меньше слово.

Вывести самое длинное слово
Есть программа, определяющая длину самого длинного слова, но не выводит самого слова. Нужно...

Вывести самое длинное слово в строке
7. Дана строка, состоящая из слов (словом считать группу символов, начинающуюся и заканчивающуюся...

Определить и вывести на экран самое длинное слово в файле
файл содержит некоторый набор символов(произвольная последовательность латинских букв)...

5
Maniac
Эксперт С++
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
15.01.2009, 02:57 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Fireman Посмотреть сообщение
1) Вывести самое длинное слово
вроде работает
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    char s[]={"bmp guigfi tochtonuzhnoooo proga simbol random ."};
    int  maxlen = 0; 
    int i,j,y;
    int len;
    for(i = 0,len = 0; i < strlen(s); i++)
    {
        len++;
        if(maxlen < len)
            maxlen = len;
        if(s[i] == ' ')
            len = 0;
    }
    printf("maxlen = %i\n",maxlen);
    //char *str = new char[maxlen + 1];
    char *str = (char*)malloc((maxlen+1)*sizeof(char));
 
    for(i = 0,len = 0; i < strlen(s); i++)
    {
        len++;
        if(len == maxlen)
        {
            for(j = 0, y = (i - maxlen + 1 ); j < maxlen; j++,y++)
            {
                str[j] = s[y];
            }
            str[j] = '\0';
            break;
        }
        if(s[i] == ' ')
            len = 0;
    }
    printf("str = %s\n",str);
    free(str);
    //delete[] str;
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 15.01.2009
Сообщений: 5
15.01.2009, 07:09  [ТС] 3
спасибо. но мне нужно решить задачи без применения дополнительных функций (можно разве что strlen)
0
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
15.01.2009, 11:45 4
Цитата Сообщение от Fireman Посмотреть сообщение
помогите, нужно срочно, компилятор указывает что ошибки в функции, но как исправит не пойму

C++
1
2
3
4
5
6
7
8
9
10
11
void funk(char s[255], int kl, int nl)
{
int x=0;
for(int i=nl; i<=kl; i++)
    if(kl-nl>x)
        {
        x=kl-nl;
        [color=red][b]dl[/b][/color]=s[i];
        }
    printf("%c", dl);
}
dl у тебя где объявлено? Ибо в этой функции я его не вижу.
0
0 / 0 / 0
Регистрация: 15.01.2009
Сообщений: 5
18.01.2009, 21:29  [ТС] 5
вот кое-что переделал в обеих программах, вроде все что используется, теперь объявил, правда все равно нето выводит:

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
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main()
{
clrscr();
int a[7][8]={   {32,65,45,97,67,16,5,17},
        {23,54,68,75,11,49,87,3},
        {0,1,56,7,68,21,87,9},
        {5,48,75,21,50,76,0, 66},
        {54,78,75,46,55,0,0,33},
        {3,56,0,56,97,56,56,88},
        {54,6,5,0,86,75,4,17}};
int i,j, m,n; //massiv index
int s=0; //stolbci s 0
int p=0; //kol-vo odinakovix elementov v stroke
int t=0, z=0;
int NS; //nomer stroki
for(j=0; j<8; j++)
    {
    for(i=0; i<7; i++)
        {
        if(a[i][j]==0)
        t=t+1;
        if(t>=1)
            {
            t=0;
            s++;
            break;
            };
        };
    };
for(i=0; i<7; i++)
    {
    for(j=0; j<7; j++)
        {
        if(a[i][j]==a[i][j+1]) p++;
        if(p>z) z=p;
        p=0;
        }
    }
 
printf("s=%i \n", s);
printf("z=%i", z);
getch();
}

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
#include<stdio.h>
#include<string.h>
#include<conio.h>
void funk(char s[255], int max, int min);
int main()
{
clrscr();
char s[255]={"bmp docx tochtonuzhno proga simbol random ."};
int km; //konec massiva
int i=0;
int nl=0, kl=0; //nachalo i konec leksem
char *dl[255]; //dlinaya leksema
while(1)
    {
    if(s[i]=='.')
        {
        km=i-1;
        break;
        }
    i++;}
for(i=0; i<=km; i++)
    {
    if(s[i]==' ')
        {
        kl=i-1;
        funk(s, kl, nl);
        nl=kl+2;
        }
    }
getch();
}
 
void funk(char s[255], int kl, int nl)
{
int x=0;
char str[255];
for(int i=nl; i<=kl; i++)
    if(kl-nl>x)
        {
        x=kl-nl;
        str[i]=s[i];
        str[i]='\0';
        }
    printf("%c", str);
}
Если кто может, исправьте пожалуйста!
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
19.01.2009, 02:09 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 for(j=0; j<8; j++)  
     {  
     for(i=0; i<7; i++)  
         {  
         if(a[i][j]==0)  
         t=t+1;  
         if(t>=1)  
             {  
             t=0;  
             s++;  
             break;  
             };  
         };  
     };
C++
1
2
3
4
5
6
    for (s = j = 0; j < 8; j++)  
        for (i = 0; i < 7; i++)  
            if (a[i][j] == 0) {
                s++;  
                break;  
            }
C++
1
2
3
4
5
6
7
8
9
 for(i=0; i<7; i++)  
     {  
     for(j=0; j<7; j++)  
         {  
         if(a[i][j]==a[i][j+1]) p++;  
         if(p>z) z=p;  
         p=0;  
         }  
     }
C++
1
2
3
4
5
6
7
    for (z = p = 1, i = 0; i < 7; p = 1, i++) {
        for (j = 1; j < 8; j++)
            if (a[i][j] == a[i][j-1])
                p++;
        if (z < p)
            z = p;  
    }
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
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAXLINE  1000      /* максимальная длина строки */
#define MAXWORD  MAXLINE   /* максимальная длина слова  */
 
/* выводит самое длинное слово строки */
main()
{
    char line[MAXLINE] = "bmp docx tochtonuzhno proga simbol random .";
    char *dup, *wp, word[MAXWORD];
    int len, maxlen;
    
    if ((dup = malloc(strlen(line)+1)) == NULL)
        return 1;
    strcpy(dup, line);
    for (wp = strtok(dup, " ."), *word = maxlen = 0;
         wp != NULL;
         wp = strtok(NULL, " ."))
        if (maxlen < (len = strlen(wp))) {
            maxlen = len;
            strcpy(word, wp);
        }    
    free((void *) dup);    
    printf("%s %d\n", word, maxlen);
    return 0;
}
0
19.01.2009, 02:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2009, 02:09
Помогаю со студенческими работами здесь

Вывести самое длинное слово строки в верхнем регистре
Добрый день в програме нужно вычислить самое долгое слово в строке и потом вывести ето слово...

Найти в каждом предложении самое длинное слово и вывести его
Заданы 2 предложения в файле my.txt. Нужно найти в каждом предложении самое длинное слово и вывести...

Найти самое длинное слово и вывести предложение большиыми буквами
Вот у меня есть программа. При вводе нескольких предложений программа находит самое длинное слово и...

Необходимо найти в заданном предложении самое длинное слово и вывести на экран
Пожалуйста, помогите найти тут ошибки. Язык -си #include&lt;stdio.h&gt; #include &lt;stdlib.h&gt; int...


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

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