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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2014, 20:44   #1
Kirillgr
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 25
По умолчанию Помогите разобраться в программах.

Доброго времени суток.
Дана строка символов. Подсчитать количество букв "а" в последнем слове данного текста.
1) Нужно написать программу, которая печатает максимальное количество непрерывных свободных килобайт памяти. (динамическая память)
2) Нужно организовать хранение строки в виде односвязного списка и его работу.
Очень прошу вас помочь (хотя бы часть каждой), мне это необходимо завтра сдать. Попытки были.
Kirillgr вне форума Ответить с цитированием
Старый 09.11.2014, 21:22   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Очень прошу вас помочь (хотя бы часть каждой), мне это необходимо завтра сдать. Попытки были.
Читай вот тут.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 10.11.2014, 19:28   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Список
Код:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
typedef unsigned char unc;
#pragma comment(lib, "wsock32.lib")
struct buf 
{ 
unc* buf1;
int n;
buf(){n=0;buf1=0;}
~buf(){if(buf1)delete buf1;}
buf(int i){buf1=new unc[i+1];buf1[i]='\0';n=i;}
void add0(unc a){buf1=new unc[2];buf1[0]=a;buf1[1]='\0';n=1;}
void add(unc a){if(n==0){add0(a);return;} int i;unc* buf2=new unc[n+2];for(i=0;i<n;i++) buf2[i]=buf1[i];buf2[n]=a;buf2[n+1]='\0';n=n+1;delete [] buf1;buf1=buf2;}
void add10(unc* a, int n1){int i;buf1=new unc[n1+1];for(i=0;i<n1;i++) buf1[i]=a[i]; buf1[n1]='\0';n=n1;}
void add1(unc* a, int n1){if(n==0){add10(a, n1);return;} int i, j;unc* buf2=new unc[n + n1+2];for(i=0;i<n;i++) buf2[i]=buf1[i];for(i=n,j=0;j<n1;j++, i++) buf2[i]=a[j];buf2[n+n1]='\0';n=n + n1;delete [] buf1;buf1=buf2; }
int len(unc* a){int n;int i;n=0;for(i=0;a[i]!='\0';i++) n++;return n;}
void add1(unc* a){int n1=len(a);if(n==0){add10(a, n1);return;} int i, j;unc* buf2=new unc[n + n1+2];for(i=0;i<n;i++) buf2[i]=buf1[i];for(i=n,j=0;j<n1;j++, i++) buf2[i]=a[j];buf2[n+n1]='\0';n=n + n1;delete [] buf1;buf1=buf2;}
void print(){if(buf1){int i;for(i=0;i<n;i++) printf("%c", buf1[i]);printf("\n");} }
};

struct request
{
buf* t;
request(){t=0;}
~request(){if(t) delete t;}
};

struct address
{
buf* t;
address(){t=0;}
~address(){if(t) delete t;} 
};

struct link
{
buf* t,*host,*page;
link* next;

link(){t=host=page=0;next=0;}
link(buf* p){next=0;t=new buf;t->add1(p->buf1);host=0;page=0;}
~link(){if(t) delete t;}
void add(struct buf *p){t=new buf;t->add1(p->buf1);} 
void add_next(struct buf *p){link* y=this;while(y->next) y=y->next;y->next=new link(p);}
void print(){printf("link: ");t->print();if(next) next->print();}
void print1(buf* u) 
{
buf* link1=new buf;
int i, f(0), k(0), s;
if(!t) s=0; else s=1;
if(u->buf1) 
{    
for(i=0;i<u->len(u->buf1);i++) 
{
if(u->buf1[i]=='>') ;else if(u->buf1[i]=='<') ;else if(u->buf1[i]=='=') ;
else
{
if(u->buf1[i]=='h' && f==0) f++;
else if(u->buf1[i]=='t' && f==1) f++;else if(u->buf1[i]!='t' && f==1) f=0;
else if(u->buf1[i]=='t' && f==2) f++;else if(u->buf1[i]!='t' && f==2) f=0;
else if(u->buf1[i]=='p' && f==3) f++;else if(u->buf1[i]!='p' && f==3) f=0;
else if(u->buf1[i]==':' && f==4)  f++;else if(u->buf1[i]!=':' && f==4) f=0;
else if(u->buf1[i]=='/' && f==5) f++;else if(u->buf1[i]!='/' && f==5) f=0;
else if(u->buf1[i]=='/' && f==6) f++;else if(u->buf1[i]!='/' && f==6)  f=0;
if(u->buf1[i]=='"' && f==7) 
{ 
if(s== 0){add(link1);s=1;} 
else add_next(link1);
delete link1;
link1=new buf;
k++;
f=0;
}
if(f==7)  link1->add(u->buf1[i]);
}}}}

void _host()
{
int s(0),i;
host=new buf;
page= new buf;
for(i=0;i<t->len(t->buf1);i++)
{
if(s==0 && t->buf1[i]=='/'){s=1;}
else if(s==1  && t->buf1[i]!='/'){printf("%c", t->buf1[i]);host->add(t->buf1[i]);}
else if(s==1  && t->buf1[i]=='/'){s=2;}
else if(s==1  && t->buf1[i]==' '){s=3;delete page;page=0;}
else if(s==1  && t->buf1[i]=='\x0d'){s=3;delete page;page=0;}
else if(s==2){s=4;printf("%c", t->buf1[i]);page->add(t->buf1[i]);}
else if(s==4){printf("%c", t->buf1[i]);page->add(t->buf1[i]);}
}
if(s==1 || s==2){ delete page;page=0;}
}
};

struct response
{
buf* t;
response(){t=0;}
~response(){if(t) delete t;}
};

struct loader
{
WSADATA data;
SOCKET sock;
SOCKADDR_IN sockaddr;
PHOSTENT phe;
int i;
response* a;
char buf1[1024];
address* b;
request* c;
link* d;
 
loader() {a=0;b=0;c=0;d=0;}
void obj(unc* addr) {if(!a){a=new response;a->t=new buf;} if(!b){b=new address;b->t=new buf;} if(!d){d=new link;} if(b->t) b->t->add1((unc*) addr); }
void addr(unc* addr) { sockaddr.sin_family=AF_INET; sockaddr.sin_port=htons(80); phe=gethostbyname((char *) addr);memcpy((char FAR*)&(sockaddr.sin_addr), phe->h_addr, phe->h_length); }
void req(buf* p, buf* p1){ if(c) delete c;c=new request;c->t=new buf; c->t->add1((unc*) "GET /\0"); if(p1) c->t->add1((unc*) p1->buf1, p1->len(p1->buf1)); c->t->add1((unc*) "\nHost: \0"); c->t->add1((unc*) p->buf1, p->len(p->buf1)); c->t->add1((unc*) "\n\n");}
void start(){WSAStartup(0x101, &data);sock=socket(AF_INET, SOCK_STREAM, 0);if(sock==0) exit(0);}
void conn(){connect(sock,(PSOCKADDR) &sockaddr,sizeof(sockaddr));}
void _send(){send(sock,(char *) c->t->buf1, c->t->len(c->t->buf1), NULL);}
void shut(){WSACleanup(); }
void _recv(){int state;state=0;while(recv(sock, buf1, 1024, NULL)){printf("%s\n",buf1);for(i=0;buf1[i]!='\0' && i < 1024;i++);a->t->add1((unc*) buf1, i+1);}d->print1(a->t);d->print();delete a->t;a->t=new buf;}
void ge(){printf("get_links\n");link* cl=d;cl->_host();while(cl->next){start();addr(cl->host->buf1);conn();req(cl->host, cl->page);_send();_recv();shut();cl=cl->next;cl->_host();}}
void main(){obj((unc*)"ya.ru\0");start();addr(b->t->buf1);conn();req(b->t, 0);_send();_recv();shut();ge();}
};

int main(){loader x;x.main();return 0;}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 10.11.2014, 19:38   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Мейн гот, что это??? О_о
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2014, 19:51   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Если б я был твоим преподом, я б тебя заставил распечатать это полотенце и сожрать его.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 10.11.2014, 21:48   #6
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Без комментариев!
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 10.11.2014, 22:02   #7
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Rififi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование '@' в программах Studik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 16.02.2011 20:08
Информация о программах Капитан Софт 0 18.10.2010 18:34
Вирусы в программах W0LF Софт 53 06.01.2010 01:34