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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
ROFAR
1 / 1 / 0
Регистрация: 30.10.2009
Сообщений: 5
#1

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

30.10.2009, 13:30. Просмотров 1873. Ответов 9
Метки нет (Все метки)

ЗДРАВСТВУЙТЕ! подскажите с чего начать в решениие этой задачи ==> "Напечатать самое длинное слово, найденное в текстовом файле", нужно сделать на С, но как незнаю((( буду благодарен любой подсказке! зарание спасиба!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2009, 13:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Напечатать самое длинное слово, найденное в текстовом файле (C++):

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

Напечатать самое длинное и самое короткое слово в строке - C++
. Напечатать самое длинное и самое короткое слово в этой строке. Вроде все выводиться но преподаватель задал вопрос что если одинаковые...

Напечатать самое длинное и самое короткое слово в строке - C++
Прошу помочь с решением задачи. Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются...

Дано предложение. Напечатать самое длинное слово - C++
Дано предложение. Напечатать его самое длинное слово(принять что такое слово-единственное) Добавлено через 9 минут есть похожая...

Найти самое длинное слово в файле - C++
Есть программа которая ищет и выводит количество символов в файле. В ней нужно дописать поиск самого длинного слова и вывести его на экран ...

Найти самое длинное слово в файле - C++
Есть програма но в ней нужно дописать функцию которая бедет, получать название файла, а возращает позицию самого длинного слова и самое...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
niXman
Эксперт C++
3135 / 1447 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
30.10.2009, 13:36 #2
1. читаешь пословесно.
2. считаешь длину прочитанного слова.
3. запоминаешь его длину.
3.1. если его длина больше длины предыдущего слова, запоминаешь его длину, иначе нет.
0
ROFAR
1 / 1 / 0
Регистрация: 30.10.2009
Сообщений: 5
30.10.2009, 13:40  [ТС] #3
спс... уже что-то, но я думаю нужно определять длину слова до пробела или точки или запятой и т.д.... так?
0
niXman
Эксперт C++
3135 / 1447 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
30.10.2009, 13:42 #4
Цитата Сообщение от ROFAR Посмотреть сообщение
я думаю нужно определять длину слова до пробела или точки или запятой и т.д.... так?
Ну да. По разделителям. Их не так то много.
Набросай код, помогу
0
ROFAR
1 / 1 / 0
Регистрация: 30.10.2009
Сообщений: 5
30.10.2009, 13:49  [ТС] #5
ок... ща буду мудрить... спс тебе niXman

Добавлено через 3 минуты
А как описать массив разделителей? я вот знаю как на Паскале это сделать ->
const razd=[' ','.',',','?','!',':',')','(']; а на Си с этим несталкивался)))
0
niXman
Эксперт C++
3135 / 1447 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
30.10.2009, 13:54 #6
C
1
char razd[] = {...};
0
ROFAR
1 / 1 / 0
Регистрация: 30.10.2009
Сообщений: 5
30.10.2009, 14:49  [ТС] #7
Цитата Сообщение от niXman Посмотреть сообщение
C
1
char razd[] = {...};
спс...

Добавлено через 54 минуты
вообще ничего нелезет в голову(((
начало программы написал, а толку 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
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{ 
   char razd[] = {'.',',',' ','!','?'};
   char c;
   FILE *fp;
 
   // Проверка наличия файла и вывод содержимого файла на экран
   if((fp=fopen("name.txt","r"))==NULL)
   {printf("\n Oshibka otkritiiy faila");getch();return 0;}
   c=getc(fp);
   printf("Sodergimoe faila --> ");
   while(c!=EOF)
   { 
     printf("%c",c);
     c=getc(fp);
   }
 
   fclose(fp);
   getch();
   return 0;
}
помоги, а то ступор конкретный(((
0
niXman
Эксперт C++
3135 / 1447 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
30.10.2009, 17:09 #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
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
#include <fstream>
#include <sstream>
 
int main(int argc, const char** argv) {
    std::string maxstring;
    
    std::ifstream file("test.cpp");
    if ( !file ) {
        std::cerr << "Can`t open file" << std::endl;
        return 1;
    }
    
    while ( !file.eof() ) {
        std::string tmp_str;
        /** читаем строку */
        file >> tmp_str;
        /** если пустая, повторяем */
        if ( tmp_str.empty() ) continue;
        /** находим самое длинное слово */
        if ( tmp_str.length() > maxstring.length() ) {
            maxstring = tmp_str;
        }
    }
    
    std::cout << "max = " << maxstring << std::endl;
 
    return 0;
}
Сейчас разделяет по пробелам. Если этого не достаточно, что нибудь придумаем
1
ROFAR
1 / 1 / 0
Регистрация: 30.10.2009
Сообщений: 5
30.10.2009, 21:37  [ТС] #9
я так понимаю этот код написан на С++( а я С++ ещё неизучал... так что мне большая половина кода непонятна niXman нельзя ли как нибудь его подогнать под С?

З.Ы. попробовал скомпилировать данный код( ругается на библиотеку <sstream> пишет Unable to open include file 'SSTREAM.h'

Добавлено через 19 минут
вот этот код мне написали в другом месте)))
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
#include <stdio.h>
#include <string.h>
 
int main(int argc, char* argv[])
{
    char bigWord[256], buf[256];
    size_t bigWordLength=0, bufLength;
    FILE *f;
 
    bigWord[0] = '\0';
 
    f = fopen("C:\\test.txt", "r");
    if(f)
    {
        while(fscanf(f, "%255s", buf) != EOF)
        {
            bufLength = strlen(buf);
            if(bufLength > bigWordLength)
            {
                strcpy(bigWord, buf);
                bigWordLength = bufLength;
            }
        }
        if(bigWordLength == 0)
        {
            puts("File is empty");
        }
        else
        {
            printf("Big word: \"%s\" (Length: %u)\n", bigWord, bigWordLength);
        }
        fclose(f);
    }
    else
    {
        puts("Cannot open file");
    }
    getchar();
}
вроде все работает нормально... может этот код каму пригодится ещё...
Но всеравно спасиба тебе niXman огромное, приятно когда твоему вопросу уделяют внимание)

Добавлено через 3 минуты
если никаких дальнейших пожеланий и замечаний небудет, то тему можно закрывать)))
1
mezahaka
2 / 2 / 1
Регистрация: 28.12.2010
Сообщений: 16
17.04.2011, 12:19 #10
Метод Редукции
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2011, 12:19
Привет! Вот еще темы с ответами:

Найти самое длинное слово в файле - C++
В заданном тексте (файле) найти самое длинное слово и самую длинную фразу и вывести их на экран. (C++)

В файле найти самое длинное слово - C++
Ребята, нужно написать программу, которая считывает текст из файла и находит самое длинное слова, а так же считает сколько раз оно...

Нужно найти самое длинное слово в файле - C++
Уже час не могу понять в чем ошибка, все компилируется, но выдает лишь последний символ. #include&lt;iostream&gt; #include&lt;fstream&gt; ...

Напечатать самое длинное слово из текста (без использования string) - C++
Напечатать самое длинное слово из текста на С++. Запретили пользоваться string. Нужна блок-схема алгоритма


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.04.2011, 12:19
Ответ Создать тему
Опции темы

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