Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поочередное выделение цветом символов в тексте, Помогите выделить! 
:(
    Опции темы
ratgunter
Дата 17.11.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



нужно в с++ дописать прогу так, чтобы символы(отличные от букв и пробелов) в выделенном предложении выделялись не сразу все, а поочередно.

Вот само задание
(1.    С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки текста не должна превышать 70 символов). Имя файла должно иметь расширение DAT. Написать программу, которая: 1)  выводит текст на экран дисплея; 2) определяет в каждом предложении текста количество символов, отличных от букв и пробелов; 3) по нажатию произвольной клавиши поочередно выделяет каждое предложение текста, а в выделенном предложении – поочередно все символы, отличные от букв и пробелов.)


#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <constrea.h>

void main()
{
   clrscr ();
   constream h;
   char ch=0;
   int k=1;
   int a=0;
   int mas[7];
   int count=0;
   ifstream fin("rat.dat");
   if(!fin)
       {
        cout<<"File not found";
        getch();
       }
   else
       {
        while (fin.get(ch))
          {
               textcolor(15);
               h << ch;
               if (ch!=' ' && (ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                   {
                    count++;
                    if ((ch=='.')||(ch=='!')||(ch=='?'))
                    {
                      textcolor(14);
                      h <<"("<<"v"<<k<<"-"<<count<<")";
                      k++;
                      ch++;
                      for(a=0;a<7;a++)
                      mas[a]=count;
                      count=0;
                    }
                   }
          }
          for (int i=0;i<k;i++)
          {
             for (int s=0; s<mas[7]; s++)
             {
              fin.clear();
              fin.seekg(0);
              getch();
              clrscr();
              int j=0;
              while (fin.get(ch))
                 {   for(a=0;a<7;a++)
                 {
                 if (j==i) textcolor (14);
                 else textcolor(15);
                 if(j==i&&mas[a]==s)
                      {
                      textcolor (13);
                      }
                 h<<ch;
                 s++;
                 }
                 if ((ch=='.')||(ch=='!')||(ch=='?'))
                 j++;
                 }

             }
                  }
     }
   fin.close();
   getch();
}

PM MAIL   Вверх
DareDevil225
Дата 17.11.2008, 12:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 19.9.2006

Репутация: 1
Всего: 1



Используйте тег КОД () пожалуйста, а то мало того что такой бешеный код, так еще и нечитабельный абсолютно

Это сообщение отредактировал(а) DareDevil225 - 17.11.2008, 12:31
PM MAIL   Вверх
ratgunter
Дата 17.11.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



Первый раз на сайте, как это сделать?

Добавлено через 7 минут и 35 секунд
Код

#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <constrea.h>

void main()
{
   clrscr ();
   constream h;
   char ch=0;
   int k=1;
   int a=0;
   int mas[7];
   int count=0;
   ifstream fin("rat.dat");
   if(!fin)
       {
        cout<<"File not found";
        getch();
       }
   else
       {
        while (fin.get(ch))
          {
               textcolor(15);
               h << ch;
               if (ch!=' ' && (ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                   {
                    count++;
                    if ((ch=='.')||(ch=='!')||(ch=='?'))
                    {
                      textcolor(14);
                      h <<"("<<"v"<<k<<"-"<<count<<")";
                      k++;
                      ch++;
                      for(a=0;a<7;a++)
                      mas[a]=count;
                      count=0;
                    }
                   }
          }
          for (int i=0;i<k;i++)
          {
             for (int s=0; s<mas[7]; s++)
             {
              fin.clear();
              fin.seekg(0);
              getch();
              clrscr();
              int j=0;
              while (fin.get(ch))
                 {   for(a=0;a<7;a++)
                 {
                 if (j==i) textcolor (14);
                 else textcolor(15);
                 if(j==i&&mas[a]==s)
                      {
                      textcolor (13);
                      }
                 h<<ch;
                 s++;
                 }
                 if ((ch=='.')||(ch=='!')||(ch=='?'))
                 j++;
                 }

             }
                  }
     }
   fin.close();
   getch();
}



PM MAIL   Вверх
DareDevil225
Дата 17.11.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 19.9.2006

Репутация: 1
Всего: 1



Насколько я понял с ходу - попробуйте так
Код

#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <constrea.h>

void main()
{
   clrscr ();
   constream h;
   char ch=0;
   int k=1;
   int a=0;
   int mas[7];
   int count=0;
   ifstream fin("rat.dat");
   if(!fin)
       {
        cout<<"File not found";
        getch();
       }
   else
       {
        while (fin.get(ch))
          {
               textcolor(15);
               h << ch;
               if (ch!=' ' && (ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                   {
                    count++;
                    if ((ch=='.')||(ch=='!')||(ch=='?'))
                    {
                      textcolor(14);
                      h <<"("<<"v"<<k<<"-"<<count<<")";
                      k++;
                      ch++;
                      for(a=0;a<7;a++)
                      mas[a]=count;
                      count=0;
                    }
                   }
          }
          [color=red]int i = -1;
          while( i < k )
          {
             i++;
             getch();[/color]

             for (int s=0; s<mas[7]; s++)
             {
              fin.clear();
              fin.seekg(0);
              getch();
              clrscr();
              int j=0;
              while (fin.get(ch))
                 {   for(a=0;a<7;a++)
                 {
                 if (j==i) textcolor (14);
                 else textcolor(15);
                 if(j==i&&mas[a]==s)
                      {
                      textcolor (13);
                      }
                 h<<ch;
                 s++;
                 }
                 if ((ch=='.')||(ch=='!')||(ch=='?'))
                 j++;
                 }

             }
                  }
     }
   fin.close();
   getch();

}


Это сообщение отредактировал(а) DareDevil225 - 17.11.2008, 13:12
PM MAIL   Вверх
ratgunter
Дата 17.11.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



блин, не тот вариант проги дал.Помогите пожалуйста, надо 22.11.08.  сдать
вот какую прогу надо дописать:
Код

#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <constrea.h>

void main()
{
   clrscr ();
   constream h;
   char ch=0;
   int k=1;
   int count=0;
   ifstream fin("rat.dat");
   if(!fin)
       {
        cout<<"File not found";
        getch();
       }
   else
       {
        while (fin.get(ch))
          {
               textcolor(15);
               h << ch;
               if (ch!=' ' && (ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                   {
                    count++;
                    if ((ch=='.')||(ch=='!')||(ch=='?'))
                    {
                      textcolor(14);
                      h <<"("<<"v"<<k<<"-"<<count<<")";
                      k++;
                      ch++;
                      count=0;
                    }
                   }
          }
          for(int i=0;i<k;i++)
             {
              fin.clear();
              fin.seekg(0);
              getch();
              clrscr();
              int j=0;
              while (fin.get(ch))
                 {
                 if (j==i) textcolor (14);
                 else textcolor(15);
                 if(j==i&&ch!=' '&&(ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                      {
                      textcolor (13);

                      }
                 h<<ch;
                 if ((ch=='.')||(ch=='!')||(ch=='?'))
                 j++;
                 }
              }

     }
   fin.close();
   getch();
}

PM MAIL   Вверх
DareDevil225
Дата 17.11.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 19.9.2006

Репутация: 1
Всего: 1



исправления те же самые
PM MAIL   Вверх
ratgunter
Дата 17.11.2008, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



Нет, сдесь предложения выделяются как надо, а символы в предложении сразу все выделяются.Прогу которую вы мне дали ругалась на [color] или вроде того и ниче не делала, просто выводила текст на экран.помогите доделать!
PM MAIL   Вверх
DareDevil225
Дата 17.11.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 19.9.2006

Репутация: 1
Всего: 1



Цитата

Прогу которую вы мне дали ругалась на [color] или вроде того и ниче не делала, просто выводила текст на экран.


[color] - это тег этого сайта, хотел цветом выделить что изменил - почему-то не сработало  smile

Добавлено через 2 минуты и 13 секунд
тогда так:
Код

#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <constrea.h>

void main()
{
   clrscr ();
   constream h;
   char ch=0;
   int k=1;
   int count=0;
   ifstream fin("rat.dat");
   if(!fin)
       {
        cout<<"File not found";
        getch();
       }
   else
       {
        while (fin.get(ch))
          {
               textcolor(15);
               h << ch;
               if (ch!=' ' && (ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                   {
                    count++;
                    if ((ch=='.')||(ch=='!')||(ch=='?'))
                    {
                      textcolor(14);
                      h <<"("<<"v"<<k<<"-"<<count<<")";
                      k++;
                      ch++;
                      count=0;
                    }
                   }
          }
          for(int i=0;i<k;i++)
             {
              fin.clear();
              fin.seekg(0);
              getch();
              clrscr();
              int j=0;
              while (fin.get(ch))
                 {
                  getch();
                 if (j==i) textcolor (14);
                 else textcolor(15);
                 if(j==i&&ch!=' '&&(ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                      {
                      textcolor (13);

                      }
                 h<<ch;
                 if ((ch=='.')||(ch=='!')||(ch=='?'))
                 j++;
                 }
              }

     }
   fin.close();
   getch();

}

PM MAIL   Вверх
ratgunter
Дата 17.11.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



не так работает.теперь текст полностью посимвольно выводится. надо чтобы при нажатии любой клавиши выделилось цветом первое предложение, затем при нажатии любой клавиши в этом предложении поочередно выделялись например все цифры и запятые.после того как все цифры и запятые выдилились, при нажатии любой клавиши должно выделиться следующее предложение, и в нем опять поочередно символы и т.д.
посмотрите еще раз пожалуйста!
PM MAIL   Вверх
DareDevil225
Дата 18.11.2008, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 19.9.2006

Репутация: 1
Всего: 1



Код

#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <constrea.h>

void main()
{
   clrscr ();
   constream h;
   char ch=0;
   int k=1;
   int count=0;
   ifstream fin("rat.dat");
   if(!fin)
       {
        cout<<"File not found";
        getch();
       }
   else
       {
        while (fin.get(ch))
          {
               textcolor(15);
               h << ch;
               if (ch!=' ' && (ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                   {
                    count++;
                    if ((ch=='.')||(ch=='!')||(ch=='?'))
                    {
                      textcolor(14);
                      h <<"("<<"v"<<k<<"-"<<count<<")";
                      k++;
                      ch++;
                      count=0;
                    }
                   }
          }
          for(int i=0;i<k;i++)
             {
              fin.clear();
              fin.seekg(0);
              getch();
              clrscr();
              int j=0;
              while (fin.get(ch))
                 {
                 if (j==i) textcolor (14);
                 else textcolor(15);
                 if(j==i&&ch!=' '&&(ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                      {
                      textcolor (13);

                      }
                 h<<ch;
                 if ((ch=='.')||(ch=='!')||(ch=='?'))
                 j++;
                 if( ch == '\n' )
        getch();
                 }
              }

     }
   fin.close();
   getch();


}


Это сообщение отредактировал(а) DareDevil225 - 18.11.2008, 14:21
PM MAIL   Вверх
ratgunter
Дата 18.11.2008, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



Ну не правильно работает, у вас символы синим цветом сразу все выделяются, а надо чтоб поочередно!
PM MAIL   Вверх
DareDevil225
Дата 19.11.2008, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 19.9.2006

Репутация: 1
Всего: 1



Попробуйте так)))
Код

#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <constrea.h>

void main()
{
   clrscr ();
   constream h;
   char ch=0;
   int k=1;
   int count=0;
   ifstream fin("rat.dat");
   if(!fin)
       {
        cout<<"File not found";
        getch();
       }
   else
       {
        while (fin.get(ch))
          {
               textcolor(15);
               h << ch;
               if (ch!=' ' && (ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                   {
                    count++;
                    if ((ch=='.')||(ch=='!')||(ch=='?'))
                    {
                      textcolor(14);
                      h <<"("<<"v"<<k<<"-"<<count<<")";
                      k++;
                      ch++;
                      count=0;
                    }
                   }
          }
          for(int i=0;i<k;i++)
             {
              fin.clear();
              fin.seekg(0);
              getch();
              clrscr();
              int j=0;
              bool bFlag= false;
              while (fin.get(ch))
                 {
                 if (j==i) textcolor (14);
                 else textcolor(15);
                 if(j==i&&ch!=' '&&(ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                      {
                      textcolor (13);
                      bFlag = true;
                      }
                 h<<ch;
                 if( bFlag ) {
                     getch();
                     bFlag = false;
                 }
                 if ((ch=='.')||(ch=='!')||(ch=='?'))
                 j++;
                 if( ch == '\n' )
        getch();
                 }
              }

     }
   fin.close();
   getch();



}


Это сообщение отредактировал(а) DareDevil225 - 12.12.2008, 09:22
PM MAIL   Вверх
ratgunter
Дата 19.11.2008, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



Да сам уже 2 месяца мучаюсь!
PM MAIL   Вверх
ratgunter
Дата 20.11.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



У меня сишник ругается на bool и выдает 5 ошибок(все связанны с bool). Самое интересное,что у меня в help'е ничего нет про bool.Что можно сделать?
PM MAIL   Вверх
DareDevil225
Дата 20.11.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 19.9.2006

Репутация: 1
Всего: 1



Цитата(ratgunter @ 20.11.2008,  14:25)
У меня сишник ругается на bool и выдает 5 ошибок(все связанны с bool). Самое интересное,что у меня в help'е ничего нет про bool.Что можно сделать?

Каие ошибки хоть пишет? не верю что не понимает тип bool

Добавлено через 1 минуту и 38 секунд
Сделайте int тогда)))
Код

#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <constrea.h>

void main()
{
   clrscr ();
   constream h;
   char ch=0;
   int k=1;
   int count=0;
   ifstream fin("rat.dat");
   if(!fin)
       {
        cout<<"File not found";
        getch();
       }
   else
       {
        while (fin.get(ch))
          {
               textcolor(15);
               h << ch;
               if (ch!=' ' && (ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                   {
                    count++;
                    if ((ch=='.')||(ch=='!')||(ch=='?'))
                    {
                      textcolor(14);
                      h <<"("<<"v"<<k<<"-"<<count<<")";
                      k++;
                      ch++;
                      count=0;
                    }
                   }
          }
          for(int i=0;i<k;i++)
             {
              fin.clear();
              fin.seekg(0);
              getch();
              clrscr();
              int j=0;
              int Flag= 1;
              while (fin.get(ch))
                 {
                 if (j==i) textcolor (14);
                 else textcolor(15);
                 if(j==i&&ch!=' '&&(ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='\n')
                      {
                      textcolor (13);
                      Flag = 2;
                      }
                 h<<ch;
                 if( Flag == 2) {
                     getch();
                     Flag = 1;
                 }
                 if ((ch=='.')||(ch=='!')||(ch=='?'))
                 j++;
                 if( ch == '\n' )
        getch();
                 }
              }

     }
   fin.close();
   getch();




}

PM MAIL   Вверх
ratgunter
Дата 21.11.2008, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



Вы не поняли: вначале выделяется предложение, затем оно остается выделенным и в нем уже другим цветом поочереди выделяются символы.А текст никуда не исчезает,он должен оставаться!
PM MAIL   Вверх
ratgunter
Дата 5.12.2008, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



Ну помогите!!!
PM MAIL   Вверх
DareDevil225
Дата 10.12.2008, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 19.9.2006

Репутация: 1
Всего: 1



нужно
-в цикле while убрать установку необходимых цветов для символов, чтобы не выделялись
-затем переместить указатель в файле на начало
-после вашего цикла while вставить еще один, в котором уже определять необходимые цвета для символов и функцией  gotoxy(int x, int y) перемещаться по уже выведенному тексту и выводить цветной символ, после чего делать ожидание нажатия клавиши(getch()) и так далее.
 smile 

PM MAIL   Вверх
ratgunter
Дата 11.12.2008, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



А можете пожалуйста дописать программу, а то реально с сентября мучаюсь.
PM MAIL   Вверх
DareDevil225
Дата 12.12.2008, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 19.9.2006

Репутация: 1
Всего: 1



Я же описал примерный алгоритм решения, вам никак самому подумать не хочется?
На форуме вам могут подсказать что либо, помочь в решении проблемы, подкинуть идею - но писать за вас программы никто не будет (не обижайтесь, но это так), если только задача интересная и есть время чтобы с ней повозиться.
По вопросам написания программ обращайтесь туда, где делают за денюжку.

Задавайте конкретные вопросы что именно у вас не получается, тогда получите ответы на них.

Добавлено через 2 минуты и 55 секунд
Кстати, если Вы не заметили, то никто на вашу задачу даже не откликнулся, кроме меня, потому что о просьбах написать что либо никто не отвечает.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4090 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.