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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2011, 22:52   #1
Человек Панда
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 75
По умолчанию Си++ Контейнерный класс

Здравствуйте всем.Я новичок в СИ++.Новичок в работе с классами,ну и,соотвественно,с контейнерами.В программе,которую пишу,необходимо организовать последовательность из строк и чисел,орг-ть удаление из начала(уже сделал),а так же сортировать слова по алфавиту.Не могли бы мне помочь организовать ввод строки?Я додумался только до ввода символа(скажете,что разницы особо нет,но я что-то заблудился).
Вот код
#include "stdafx.h"
#include "Num.h"
#include <string.h>
#include <stdlib.h>
#include <conio.h>
TSpisok N;

int _tmain(int argc, _TCHAR* argv[])
{
char str[10];
int k,i,key;
TElement *p;
puts("\nEnter: - 1 for Add Element");
puts(" - 2 to delete element");
puts(" - 3 for sort");
puts(" - 4 for close\n");
scanf("%d",&key);
while (key!=4)
{if (key==1)
{while(printf("Input numbers, strings or <end>:"),
scanf("%s",str),strcmp(str,"end"))
{k=atoi(str);
if (k) p=new TNum(k);
else p=new TChar(str[0]);
N.Add(p);
}
puts("\nInformation");
N.ForEach(Show);
puts("\n________________\n");
p=N.First();k=0;
while (p!=NULL)
{if (TNum *q=dynamic_cast<TNum *>(p)) k+=q->num;
p=N.Next();
}
p=N.First();i=0;
while (p!=NULL)
{if (TChar *q=dynamic_cast<TChar *>(p)) str[i++]=q->ch;
p=N.Next();
}
str[i]='\0';}
if (key==2)
{N.Del();
N.ForEach(Show);}
if (key==3)
{}
if (key==4)
{}
puts("\nEnter: - 1 for Add Element");
puts(" - 2 for delete element");
puts(" - 3 for sort");
puts(" - 4 for close\n");
scanf("%d",&key);
}

return 0;
}

Куда передаем
заголовочный файл
#include "Element.h"
class TNum: public TElement
{public:int num;
TNum(int n):TElement(),num(n) {}
~TNum() {puts("Delete TNum");}
void Print() {printf("%d",num);}
};
class TChar: public TElement
{public: char ch;
TChar(char c):TElement(),ch(c) {}
~TChar() {puts("Delete TChar");}
void Print() {printf("%c",ch);}
};
void Show(TElement *e);


Категорически не понимаю строку {if (TChar *q=dynamic_cast<TChar *>(p)) str[i++]=q->ch; Объясните,пожалуйста,как организовать для строки


Вот до конца вся программы:
заголовочный файл
#include <stdio.h>
class TElement
{ public: TElement *pre;
TElement() {pre=NULL;}
virtual ~TElement() {puts("Delete TElement");}
virtual void Print()=0;
};
class TSpisok
{private:TElement *first,*last,*cur;
public : TSpisok(){first=last=cur=NULL;}
~TSpisok();
void Add(TElement *e);
TElement *Del();
void ForEach(void (*f)(TElement *e));
TElement *First(){return cur=first;}
TElement *Next(){return cur=cur->pre;}
TElement *Last(){return cur=last;}
};


#include "stdafx.h"
#include "Num.h"
#include <string.h>
#include <stdlib.h>
void Show(TElement *e)
{ e->Print();
printf(" ");}






#include "stdafx.h"
#include "Element.h"
TSpisok::~TSpisok()
{puts("Delete TSpisok");
while ((cur=Del())!=NULL) {cur->Print();
delete(cur);}
}
void TSpisok::Add(TElement *e)
{if (first==NULL) first=last=cur=e;
else {last->pre=e;
e->pre=NULL;
last=e;}
}
TElement *TSpisok::Del(void)
{TElement *temp=first;
if (first!=NULL) first=first->pre;
if (first==NULL) printf("Pusto");
return temp;
}
void TSpisok::ForEach(void(*f)(TElement *e))
{cur=first;
while (cur!=NULL)
{(*f)(cur);
cur=cur->pre;
}
}
Человек Панда вне форума Ответить с цитированием
Старый 08.05.2011, 17:58   #2
Человек Панда
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 75
По умолчанию

я организовал ввод строки.вот как терь список сортировать?он же уже введен!!!!
Человек Панда вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описать класс-родитель и класс-потомок. Delphi 7 Andrew_M Помощь студентам 0 15.01.2011 14:42
КЛАСС 4ika Общие вопросы C/C++ 1 16.03.2010 21:32
реализовать контейнерный класс за $$$ B1GBEN Фриланс 2 14.12.2009 00:46
реализовать контейнерный класс B1GBEN Помощь студентам 0 13.12.2009 14:21
[за $$$] сделать лабораторную на С++ (контейнерный класс set) velvetdust Фриланс 3 18.11.2009 16:27