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

В идентификаторе минимальной длины определить количество букв - C++

Восстановить пароль Регистрация
 
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
16.08.2011, 15:19     В идентификаторе минимальной длины определить количество букв #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
44
45
46
# include <iostream>              // класс для работы с вводом-выводом
# include <windows.h>             // для функции    CharToOem(text, bufRus);
# include <fstream>           // класс для работы с файлом  
# include <string>            // класс для работы со строками   
char* Rus(const char* text);      // прототип функции Rus
void main()
{using namespace std;           //необходимо для работы с классом
     string st,stt,str;             // st исходная строка
     string ch;
     char name[10];
     cout<<Rus("введи имя файла")<<endl;
     cin>> name;
     ifstream inf(name);        //открытие файла name на чтение 
     getline(inf,st);           //чтение из файла строки в строку st
     cout<< "st="<< st <<endl;
     int l=0;
     int k=0, i=0,min=200;
     
     while(st[i]!='*')
     {   stt= "";
        while (st[i]!=' ' && st[i]!='*')    // последнее слово может                                    //заканчиваться *
        {
         stt+=st[i];                // stt текущее слово
         i++;
        }
        l=stt.length();
        if(l<min) {min=l; str=stt;}     // str результат    
        
        while(st[i]==' ')i++;           // пропуск серии пробелов
     }
     cout<<Rus("результат 1=")<<str<<endl;
     for(i=0; i<(min-1);i++)
         if(str[i]>='a' && str[i]<='z') k++;
        cout<<"k="<<k<<endl;
    
}
 
 
//  Rus функция перевода на русский !!!
 
    char bufRus[256];
    char* Rus(const char* text)
    {
        CharToOem(text, bufRus);
    return bufRus;
    }
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2011, 15:19     В идентификаторе минимальной длины определить количество букв
Посмотрите здесь:

Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. C++
C++ Слово максимальной длины заменить на слово минимальной длины
Определить в предложении слова максимальной и минимальной длины и поменять их местами. C C++
C++ Поменять местами слово максимальной и минимальной длины.
Работа с файлами. Определить и напечатать слова минимальной длины C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
16.08.2011, 16:40     В идентификаторе минимальной длины определить количество букв #2
Если "ни фига не работает", то сообщайте, что именно не работает! Либо он у вас не компилируется, либо выдает ошибку времени выполнения, либо выдает логически неверный результат.
-=ЮрА=-
Заблокирован
Автор FAQ
16.08.2011, 21:57     В идентификаторе минимальной длины определить количество букв #3
Цитата Сообщение от lexflax Посмотреть сообщение
while(st[i]!='*')
* * * * *{* * * *stt= "";
* * * * * * * * while (st[i]!=' ' && st[i]!='*')* * * * // последнее слово может * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //заканчиваться *
* * * * * * * * {
* * * * * * * * *stt+=st[i];* * * * * * * * * * * * * * // stt текущее слово
* * * * * * * * *i++;
* * * * * * * * }
* * * * * * * * l=stt.length();
* * * * * * * * if(l<min) {min=l; str=stt;} * * * * * * // str результат* * * *
while(st[i]==' ')i++; * * * * * * * * * // пропуск серии пробелов
* * * * *}
Думаю может вылетать потому что в циклах нет проверки на достижение конца строки, что нибудь типа
C++
1
2
if(!(*st + i))
break;
, а также есть подозрения на ошибку потока, т.к. inf не закрывается после чтения inf.close() и при повторном чтении почти на 100% уверен будут вылезть баги...
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.08.2011, 22:15     В идентификаторе минимальной длины определить количество букв #4
Цитата Сообщение от lexflax Посмотреть сообщение
а компилирую и запускаю в компиляторе с++ трубо .
смените компилятор ибо этот безнадежно устарел
Yandex
Объявления
16.08.2011, 22:15     В идентификаторе минимальной длины определить количество букв
Ответ Создать тему
Опции темы

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