Объединенный архив форумов UniverClub и StudLife (2006-2010). Поддерживает: Леонид Шевцов.

Помощь по программированию на BC

1267
Итак, ребята: я тупой. Завтра сдавать лабу по программированию по работе с файлами, а я не могу справиться с элементарной вещью: выполнить собственно задание лабы.
Задание заключается в следующем: необходимо в текстовом файле найти самое длинное слово, начинающееся с символа "e", притом если есть несколько таких слов одинаковой длинны, то найти последнее. Мой код выглядит вот следующим образом:

void task(char word[255],char maxword[255])
{
clrscr();
cout<<"Input file name: ";
cin>>fname;
clrscr();
if((file=fopen(strcat(fname,".txt";),"r+";))==NULL)
cout<<"Can't open file. Press any key to continue.";
else
{
while(!feof(file))
{
fgets(strings,255,file);
j=1;
for(int i=1;i<=strlen(strings);i++)
{
if(strings[i]!=' &apos;)
{
word[j]=strings[i];
j++;
}
else
{
j=1;
if(word[1]=='e&apos;)
{
cout<<word;
if(strlen(word)>=strlen(maxword))
maxword=word;
}
}
}
}
cout<<"The last largest word beginning with 'e' is '"<<word<<"'.";
}
getch();
fclose(file);
clrscr();
}

Проблема заключается в том, что я ума не приложу, где здесь ошибка (не та, что "исключительная ситуация";). Пожалуйста, need help!
16
ээээ.....хз)) ты maxword ниде с начала не задаешь, может нада его присвоить первому слову в файле с "е"? и ты ваще по-моему смотришь только на word[1] которое только в первой строчке. тада вроде в else нада еще счетчик на j добавить. эт так, мысли вслух, я Си полгода учил, на паскале я бы сразу те ошибку нашел. в-общем ждем наших програММёров))

зы а ваще лаба элементарная, позор мну шо не знает как)))))
32
Сцуко... Не могу въехать, почему компайлер делает это именно так..

добавлено через 52 минуты
ХЗ, хотел с помощью strtok сделать, так он, гад, у меня некорректно пашет. Или это я все позабывал...
1081
тихо плачу пацталом... :hysterical: :hysterical:
1267
Никто?..
1341
уууу батенька у вас тут ошибок... И вобще строки с нуля начинаться должны.
Примерно так:
#include<conio.h>
#include"stdio.h"
#include"iostream.h"
#include <string.h>

void task()
{

char fname[20];
char strings[20];
char word[255];
char maxword[255];

clrscr();
cout<<"Input file name: ";
cin>>fname;
FILE *file;
clrscr();
if((file=fopen(strcat(fname,".txt";),"r+";))==NULL)
cout<<"Can't open file. Press any key to continue.";
else

{
strcpy(maxword,"";);
while(!feof(file))
{
fgets(strings,255,file);

int j=0;
for(int i=0;i<=strlen(strings);i++)
{

if((strings[i]!=' &apos;) &&(strlen(strings)>i))
{
word[j]=strings[i];
j++;
}
else
{
word[j]='\x0';
j=0;
if(word[0]=='e&apos;)
{
cout<<word<<endl;
if(strlen(word)>=strlen(maxword))
strcpy(maxword,word);
}
}
}
}
cout<<"The last largest word beginning with 'e' is '"<<word<<"'.";
}
getch();
fclose(file);
clrscr();
}

void main()
{
task();

}

А вообще у нас 80% группы не знает что такое clrscr и void. вот тебе и ДИИТ
1267
Killer
Огромное спасибо!!! Наконец-то разобрался и в кои-то веки сдал!
1081
Killer, только хотел сам написать )))

Что меня смущает, так это юзание iostream для вывода в консоль и stdlib для ввода из файла... это ж ламаразмы. они по-бокопорски синхронизируются.

Тут уже или одно, или другое... почему-то cout все преподы учат, а вот о fstream не заикаются (((

Кстати, а какой сисьник использоваля? АФАИК на примате юзают доисторический Borland C++ 3.1? там, конечно, такое может и не пойти. )) И std::string там нету... буээээ

Вывод: самому надо учить! И юзать нормальные, совместимые со стандартом компилеры! GCC рулит! *THUMBS UP*

А вообще у нас 80% группы не знает что такое clrscr и void. вот тебе и ДИИТ


не хочу своих обижать, но ситуация аналогична.
1341
я проверял на Borland C++ 3.1, поскольку по-моему это и требовалось.
Использовал stdlib(stdio.h) поскольку в исходном примере использовались fopen и fgets

Работает нормально, не по-бокопорски синхронизируются:)
1081
Да примитивная лаба в любом случае будет работать "нормально", просто неплохо бы для реальных задач учиться делать правильно. ;)
32


не хочу своих обижать, но ситуация аналогична.

coldFlame

А у нас и на втором курсе иногда не знают циклов. Это мне по секрету рассказали.

coldFlame, у мну зато не 3.1, а 5.02!
1081
NeWa, а у меня M$ Visual Studio 2003. Вот кроме него и ГЦЦ я ничего за компилятор не считаю )
1341

А у нас и на втором курсе иногда не знают циклов. Это мне по секрету рассказали.

coldFlame, у мну зато не 3.1, а 5.02!

NeWa


Читай мои сообщения:) Я на втором курсе, и не знание циклов это ещё не самое худшее!!! некоторые ВООБЩЕ ничего не знают. Даже "хелло, ворд" ни на чём не напишут (разве что в ворде и то с трудом). Я с этого фигею
1081
Killer, некоторые мои экс-одногруппники на третьем до сих пор еще не въехали (горка, СМ)
32

Visual Studio 2003

coldFlame

Ацтой-ацтоем!

Killer, паанимаааааешь (из песни)
1081

Ацтой-ацтоем!


Да ты просто ламо. Студия - самая удобная среда разработки С++, а компилятор производит одни из лучших экзешников.
32
coldFlame, а мне там неудобно. И вообще, раз такой умный, давай откроем раздел, будешь нас, ламаков там учить, аха?
26

Да ты просто ламо. Студия - самая удобная среда разработки С++, а компилятор производит одни из лучших экзешников.

coldFlame


вис.студио норм, у мну дет 05 лежит, однозначно вещь.
1081
NeWa, ты бы послушал опытного человека, чем гнать втупую...
32
Все, забейте, мне 5.02 удобнее всех пока. Что дальше будет, пока я не знаю, но пока это моё ИМХО.
1081
А ты хоть видел VS чтобы так утверждать? Поверь, лучше него еще никто ничего не придумывал. ;)
1005

не хочу своих обижать, но ситуация аналогична.


coldFlame, че ты гонишь на своих, мы С++ ваще не учили, конешна 80% не знают, что такое clrscr и void. А без зниний циклов и вообще таких элементарных вещей Егорка врядли поставил бы кому-нить экзамен.
1081
M@ximk@, Ыыыыы. :-D
Ну блин я и не имел ввиду С++. Без имения шпор Егорка тоже врядли поставил кому-нить экзамен. И вообще, это не показатель. Показатель - лабы.
Missing

NeWa, а у меня M$ Visual Studio 2003. Вот кроме него и ГЦЦ я ничего за компилятор не считаю )

coldFlame


Уж простите, что в разговор влажу... Интересно просто, когда эт MS VS причислили к КОМПИЛЯТОРАМ??? Верно ниже было отмечено, VS - это IDE, т.е. среда разработки (причём не только под С/С++). Просто сравнивать компилятор со средой разработки - несколько некорректно, это ведь абсолюятно разные понятия...
1081
ой да ладно... я же написал

Студия - самая удобная среда разработки С++, а компилятор производит одни из лучших экзешников.


Под виндовсом VC++ действительно производит лучшие по производительности экзешники.

А гцц - хуже :) и ИДЕ под него приличного я так и не нашел...

Зато гцц портабельный до невозможности. Я обычно пишу код так, чтобы его можно было без проблем перенести в GCC.

BCPPB перегружен извращенными фичами для совместимости с VCL, за это я его не люблю.

Intel C++ Compiler - платный, да и код не всегда лучшим образом оптимизирует.


Просто, когда речь идет о VC++, обычно подразумевается и VS.
Missing
Ну gcc - классика, ему уже не один десяток лет... К тому же GNU GPL *THUMBS UP*
1081
Alexasho, вот и я о том же :) Отлаживаю в студии, а потом могу смело компилить в бесплатном GCC.

Вещи типа MFC/VCL никогда не любил, уж очень они ограниченные. Т.б. что есть Qt и wxWidgets..
Missing
Чувствую неприязнь ко всему, что майкрософт :) msvs туда же))) Ну и MFC тож (жалкая пародия на Java Foundation Classes ИМХО)
1081
Нее, IDE удобнее MSVS я лично не видел нигде, хотя перепробовал многое...
это, наверное, единственный продукт M$, который я люблю :)
Missing
Eclipce, NetBeans... Но о вкусах не спорят.
А вообще, мне нравится фраза "vi - удел настоящих мужчин" ))) Как говорится, в то время, когда все программисты были бородатыми и в очках: h**p://images.amazon.com/images/P/1861000111.01.LZZZZZZZ.gif
1081
Это все хорошо, но это ведь Ява, а я о C++... NetBeans - мощь, не спорю
1325
Eclipse просто охренителен когда нужна VS не для C++\C#\VB\J#
Missing
cout<<"The last largest word beginning with 'e' is '"<<word<<"'.";

уже эта строчка означает что выведится последнее слово с буквы 'e', и не обьязательно наибольшее