Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2011, 18:01   #1
sokvalnoiva
Новичок
Джуниор
 
Регистрация: 15.11.2011
Сообщений: 1
По умолчанию Корректировка проги СИ

// lab3.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;

FILE *bigtxt;

int _tmain(int argc, _TCHAR* argv[])
{
setlocale (LC_CTYPE, "Russian");
bigtxt = fopen ("bigtext.txt", "r");
char simbol;
int max = 0;
int shetchik = 0;
char *str2;
char *slovo;
str2=( char *)malloc(10);
slovo=( char *)malloc(10);
if (bigtxt == NULL)
{
cout << "Данный файл поврежден, или не существует!\n";
}
else
{
cout << "Введите букву который вы хотите найти: ";
cin >> simbol;
while (!feof (bigtxt))
{
fscanf (bigtxt, "%s", str2);
for (int a=0; a < strlen (str2); a++)
{
if (str2[a] == simbol) shetchik++;
if (shetchik > max)
{
strcpy (slovo, str2);
max = shetchik;
}
}



}
}

if (max > 0)
{
cout << slovo << "\n";
}
else
{
cout << "В данном тексте данный символ не встречается!\n";
}

return 0;
}

Как сделать так, чтобы выводилось не последнее слово с этим символом, а с большим вхождением?
http://pastie.org/2866968

Последний раз редактировалось sokvalnoiva; 15.11.2011 в 18:08.
sokvalnoiva вне форума Ответить с цитированием
Старый 16.11.2011, 01:35   #2
<gr>
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 11
По умолчанию

Цитата:
Сообщение от sokvalnoiva Посмотреть сообщение
Код:
      while (!feof (bigtxt))
      {
        fscanf (bigtxt, "%s", str2);
        for (int a=0; a < strlen (str2); a++)
        {
          if (str2[a] == simbol) shetchik++;
             if (shetchik > max)
             {
                strcpy (slovo, str2); 
                max = shetchik;             
             }
        }        
      }
Ошибка кроется в том, что Вы забываете сбросить значения счетчика. Необходимо добавить schetchik = 0 перед считыванием нового слова.
The truth is out there...
<gr> вне форума Ответить с цитированием
Старый 16.11.2011, 01:47   #3
<gr>
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 11
По умолчанию

Цитата:
Сообщение от sokvalnoiva Посмотреть сообщение
Код:
      while (!feof (bigtxt))
      {
        fscanf (bigtxt, "%s", str2);
        for (int a=0; a < strlen (str2); a++)
        {
          if (str2[a] == simbol) shetchik++;
             if (shetchik > max)
            {
              strcpy (slovo, str2); 
              max = shetchik;             
            }
        }


          
      }
Насчет самого цикла. У вас проверка shetchik > max будет выполняться лишний раз. Можно организовать таким образом:
Код:
      int a;
      while (!feof (bigtxt))
      {
        shetchik = 0; 
        fscanf (bigtxt, "%s", str2);

        for (a=0; a < strlen (str2); ++a)
            if (str2[a] == simbol) ++shetchik;
       
        if (shetchik > max)
        {
              strcpy (slovo, str2); 
              max = shetchik;             
        }         
      }
The truth is out there...
<gr> вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Корректировка программы изо Паскаль, Turbo Pascal, PascalABC.NET 9 21.03.2011 13:54
Две проги. Порезка труб и движения коня по шахматной доске. По какому принципу работают такие проги? sadf Общие вопросы C/C++ 4 06.03.2010 20:04
Корректировка БД nataly_ukr БД в Delphi 5 07.11.2007 15:04