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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2013, 17:12   #21
DerekXlive
Пользователь
 
Регистрация: 22.05.2013
Сообщений: 19
По умолчанию

Забыл сказать, только вспомнил. Мне ведь нужно вызывать метод после
Код:
}while(tm1.ti_sec==tm2.ti_sec);
      tm1=tm2;
Эта конструкция
Код:
list l = NULL;
//...
for(node* cur = l; cur!= NULL; cur=cur->next){ //Эта конструкция была в посте №9
  cur->data.vremya();
}
может быть использована после while?
DerekXlive вне форума Ответить с цитированием
Старый 28.05.2013, 17:21   #22
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Не понимаю вопроса. Не понимаю, какое Ваше непонимание за ним стоит, и мне это категорически не нравится.
Это - код обхода всех элементов списка l. Он выполним в любой точке программы, в которой существует список l. В теле цикла (которое выполнается один раз для каждого элемента списка) может присутствовать код любой сложности. Это обычный цикл. Его можно ставить куда угодно. Внутри него можно использовать операторы цикла - break, continue. Проследите, откуда у Вас вообще вязлась мысль, что его может быть нельзя использовать после цикла do...while.
Abstraction вне форума Ответить с цитированием
Старый 28.05.2013, 18:46   #23
DerekXlive
Пользователь
 
Регистрация: 22.05.2013
Сообщений: 19
По умолчанию

Abstraction компилятор ругается на вызов и на цикл
Код:
for(node* cur = l; cur!= NULL; cur=cur->next){ //Эта конструкция была в посте №9
  cur->data.vremya();
Код:
structure required
И ещё, мне изменили условие. Список так же нужно реализовать с помощью класса.
Я так думаю, что ничем не будет отличаться класс от структуры, или есть некоторые тонкости?

Последний раз редактировалось DerekXlive; 28.05.2013 в 20:20.
DerekXlive вне форума Ответить с цитированием
Старый 28.05.2013, 20:21   #24
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Abstraction компилятор ругается на вызов и на цикл
Какой у Вас тип cur->data? В последней версии, которую я видел, это был ind.
Точно ли тип узла списка у Вас назван node? Если нет, поменяйте node на Ваше название.
Неужели Вы не можете самостоятельно определить, что не по вкусу компилятору? Он же выражается достаточно понятно.
Abstraction вне форума Ответить с цитированием
Старый 28.05.2013, 20:52   #25
DerekXlive
Пользователь
 
Регистрация: 22.05.2013
Сообщений: 19
По умолчанию

Код:
#include<conio.h>
#include<dos.h>
#include<graphics.h>
#include<iostream.h>
#include<stdlib.h>
class ind
{
  ind *next;//Указатель на следующий элемент
  int g,t,f,c,x,y;//t-vremya ost,i-vremya sozd,f-vremya rabotu
  char s[10],r[10],p[10],z[10],v[10];
  struct time i;
public:

  ind(ind *nx)
  {
    next=nx;
    f=0;
    cout<<"V kakom meste razmestit indikator, vvedite koordinatu x,y";
    cin>>x>>y;
    cout<<"vvedite vremya deystvia indikatora,VNIMANIE!PRI VUBORE VARIANTA 2 idikator uadlitsya posle 10 sekund posle vremeni jizni\n";
    cin>>t;
    cout<<"chto vivodit? 1-vremya ost,2-vremya sozd(po nagatiu enter udalyaetsa,3-vremya rabotu\n";
    cin>>c;
    gettime(&i);
  }
ind* getnext(){return next;}
  void vremya()
  {
    switch(c)
    {
      case 1:{itoa(t,s,10);t=t-1;outtextxy(x,y,s);if(t==0)setcolor(0);break;}
      case 2:
      {
        itoa(i.ti_hour,r,10);
        itoa(i.ti_min,z,10);
        itoa(i.ti_sec,v,10);
	outtextxy(x,y,r);
	outtextxy(x+20,y,z);
	outtextxy(x+40,y,v);
	break;
      }
      case 3:{itoa(f,p,10);f++;outtextxy(x,y,p);break;}
      default:cout<<"Oshibka";
    }
  }
};

void main()
{
ind *head=NULL;//Cписок пуст
  int n,i,j,GD=0,GM;
  char q;
  do
  {
    cout<<"Nagmite klavishu 1,chtoby dobavit odin indikator,ESC-chtobu zakoncit sodanie";
q=getch();
switch(q)//Думаю проблема в этом блоке
{
case'1':cout<<"Ukajite indikator,napishite kluchevoe slovo ob:";
head=new ind(head);break;
}
}while(q!=27);
initgraph(&GD,&GM,"");
struct time tm1,tm2;

for(;;)
    {
    ind *temp=head;
      gettime(&tm1);
      do
      {
	gettime(&tm2);
	if(kbhit()) if (getch()==8)
	{
	  closegraph();return;
	}
      }while(tm1.ti_sec==tm2.ti_sec);
      tm1=tm2;
temp=head;
while(temp)
{
temp->vremya();// Вот здесь Я вызываю метод.
temp=temp->getnext();
cleardevice();
     }
   }
 }
Переделал вот так. Но теперь не выводит время. Скажите пожалуйста, в чём проблема?

Последний раз редактировалось DerekXlive; 28.05.2013 в 20:58.
DerekXlive вне форума Ответить с цитированием
Старый 28.05.2013, 21:12   #26
DerekXlive
Пользователь
 
Регистрация: 22.05.2013
Сообщений: 19
По умолчанию

Всё Abstraction нашёл проблему,
Код:
cleardevice()
не там написал.
Всё получилось, всё работает, спасибо за уделённое время, всего хорошего.
DerekXlive вне форума Ответить с цитированием
Старый 30.05.2013, 20:23   #27
DerekXlive
Пользователь
 
Регистрация: 22.05.2013
Сообщений: 19
По умолчанию

Abstraction возникла проблема. Нужно выводить индикатор с наибольшим временем красным цветом. Я не пойму где реализовать поиск максимального элемента.
Код:
#include<conio.h>
#include<dos.h>
#include<graphics.h>
#include<iostream.h>
#include<stdlib.h>
class ind
{
  ind *next;
  int g,t,f,c,x,y;//t-vremya ost,i-vremya sozd,f-vremya rabotu
  int tx,fx;
  char s[10],r[10],p[10],z[10],v[10];
  struct time i;
public:

  ind(ind *nx)
  {

    f=0;
    cout<<"V kakom meste razmestit indikator, vvedite koordinatu x,y";
    cin>>x>>y;
    cout<<"vvedite vremya deystvia indikatora";
    cin>>t;
    tx=t;
    cout<<"chto vivodit? 1-vremya ost,2-vremya sozd,3-vremya rabotu\n";
    cin>>c;
    next=nx;
    gettime(&i);
  }
ind* getnext(){return next;}
  void vremya()
  {
      switch(c)
    {
      case 1:{itoa(t,s,10);t=t-1;outtextxy(x,y,s);if(t==0)t=tx;break;}
      case 2:
      {
	itoa(i.ti_hour,r,10);
	itoa(i.ti_min,z,10);
	itoa(i.ti_sec,v,10);
	outtextxy(x,y,r);
	outtextxy(x+20,y,z);
	outtextxy(x+40,y,v);
	break;
      }
      case 3:{itoa(f,p,10);f++;outtextxy(x,y,p);if(f==t)f=0;break;}
      default:cout<<"Oshibka,ne vernaya klavisha";
    }
  }
};

void main()
{
ind *head=NULL;
  int n,i,j,GD=0,GM;
  char q;
  //n=0;
  do
  {
    cout<<"Nagmite klavishu 1,chtoby dobavit odin indikator,ESC-chtobu zakoncit sodanie";
q=getch();
switch(q)
{
case'1':cout<<"Ukajite indikator:";
//n++;
head=new ind(head);break;
}
}while(q!=27);
initgraph(&GD,&GM,"");
struct time tm1,tm2;
gettime(&tm1);
for(;;)
    {
ind *temp=head;
      do
      {
	gettime(&tm2);
	if(kbhit()) if (getch()==8)
	{
	closegraph();
while(head)
{
temp=head->getnext();
delete head;
head=temp;
}return;
	}
      }while(tm1.ti_sec==tm2.ti_sec);
      tm1=tm2;
temp=head;
while(temp)
{
cleardevice();
temp->vremya();
temp=temp->getnext();

     }
   }
 }
DerekXlive вне форума Ответить с цитированием
Старый 30.05.2013, 21:15   #28
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Поиск узла, содержащего максимальный элемент, в списке целых чисел.
В Вашем случае вместо простого оператора > может потребоваться более сложная конструкция, выражающая отношение "один индикатор больше другого":
Код:
list l;
//...
node* max = NULL;
if(l != NULL){
  max = l;
  for(node* cur = l; cur != NULL; cur=cur->next){
    if(cur->data > max->data) max = cur;
  }
}
//Теперь max указывает на узел списка, содержащий максимальный элемент, или NULL, если список пуст
Abstraction вне форума Ответить с цитированием
Старый 30.05.2013, 21:40   #29
DerekXlive
Пользователь
 
Регистрация: 22.05.2013
Сообщений: 19
По умолчанию

То есть он выведет Элемент с наибольшим t?
DerekXlive вне форума Ответить с цитированием
Старый 30.05.2013, 22:03   #30
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Поиск узла, содержащего максимальный элемент, в списке целых чисел.
Цитата:
То есть он выведет Элемент с наибольшим t?
Нет, это не код вывода элемента с наибольшим t, а код поиска узла списка целых чисел, содержащего максимальный элемент в поле data.
Как Вы пришли к Вашему "то есть", я откровенно не понимаю. Поясните, если можно.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать односвязный список и вывести его на экран. Из этого списка создать новый список по указанному ниже правилу и новый список San111 Паскаль, Turbo Pascal, PascalABC.NET 1 15.05.2012 22:08
Необходимо реализовать классы, односвязный список для хранения целых чисел, односвязный список для хранен lineico Помощь студентам 2 09.05.2011 17:45
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52
программа с использованием подпрограмм, создаёт односвязный список и вычисляет сумму положительных чисел LOVELY Паскаль, Turbo Pascal, PascalABC.NET 5 13.12.2008 01:27