






































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostilas de Computação da Pontifícia Universidade Católica do Paraná PUCPR sobre Técnicas de Programação, Estrutura do algoritmo em portugol, Comandos de controle, Algoritmos em portugol, Programação em linguagem c.
Tipologia: Notas de estudo
1 / 46
Esta página não é visível na pré-visualização
Não perca as partes importantes!







































void __fastcall TForm1::PaintBox1Paint(TObject *Sender) { TPaintBox *pCor = (TPaintBox *)Sender; int x; for (x=0; x <= pos;x++) { pCor->Canvas->Pen->Color = (Graphics::TColor) random(65535); PaintBox1->Canvas->MoveTo(coord[x].X1,coord[x].Y1); PaintBox1->Canvas->LineTo(coord[x].X2,coord[x].Y2); } }
#define MAX 20 char *p[MAX];// vetor de ponteiros int prox=0; // próximo elemento livre da fila int prim=0; // primeiro elemento da fila // insere elementos na fila void Insere( char *q) { if (prox==MAX) { Application->MessageBox("Lista Cheia","Mensagem",MB_OK); return ; //lista cheia } // se Insere recebe 'A' p[prox] = q; // p[0] aponta para o endereço de 'A' "&q" prox++; // próxima posição vazia da lista. }
// retira elementos da fila, esta função retorna um ponteiro char *retira() { if (prim==prox) { Application->MessageBox("Lista Vazia","Mensagem",MB_OK); return NULL; } prim++; // início da fila para o segundo elemento return p[prim-1]; // retorna o elemento retirado da fila }
prim
prox
prim
prox
prim
prox
#define MAX 20 int *p; int *topo; int *tama;
void push( int i) { if (p > tama) { Application->MessageBox("Pilha Cheia","Mensagem",MB_OK); return ; //pilha cheia }
*p = i; // falta alocar memoria para p p++; // proxima posicao da pilha }
int pop( void ) { p--; if(p < topo) { Application->MessageBox("Pilha Vazia","Mensagem",MB_OK); return 0; //pilha vazia } return *p; }
/** Antes que estas funções possam ser usadas, uma região de memória livre deve ser alocada com MALLOC(). O endereço de início dessa região deve ser atribuída a topo , e o endereço final a tama .* */
void main( void ) { // obtém memória para a pilha p = (int *) malloc(MAX * sizeof(int)); if (!p) { Application->MessageBox("Falha de Alocação","",MB_OK); exit(1) ; } topo = p; // topo da pilha tama = p + MAX -1; // tamanho máximo da pilha
//Declarado como global typedef struct aluno { char nome[50]; int idade; struct aluno *prox; }
aluno *inicio, *pt_aux; // associado a um botão: { pt_aux = (aluno *) malloc(sizeof(aluno)); strcpy(pt_aux->nome,"Fulano1"); pt_aux->idade = 30; pt_aux->prox = NULL; inicio = pt_aux; pt_aux = (aluno *) malloc(sizeof(aluno)); strcpy(pt_aux->nome,"Fulano2"); pt_aux->idade = 31; pt_aux->prox = inicio; inicio = pt_aux; pt_aux = (aluno *) malloc(sizeof(aluno)); strcpy(pt_aux->nome,"Fulano3"); pt_aux->idade = 32; pt_aux->prox = inicio; inicio = pt_aux; }
struct pontos { int X; int Y; struct pontos *prox; };
struct pontos *ini; // é um ponteiro para estrutura pontos
int remove( struct pontos *elemento) { struct pontos *ant; if (elemento == NULL) return 0; for (ant = ini; ant != NULL ; ant = ant->prox) { if (ant->prox == elemento) { ant->prox = elemento->prox; free (( struct pontos *)); break ; } } return 1; }
#include <stdio.h> #define ALOCA (struct aluno *) malloc(sizeof(struct aluno)) struct aluno { char nome[20]; int idade; struct aluno *prox; };
struct aluno *nova(void) { struct aluno *x; x = ALOCA; x->prox = 0; return (x); } //---------------------------------------------------- struct aluno *insere(struct aluno pt) { if (pt->prox == NULL) { strcpy(pt->nome,Form1->Edit1->Text.c_str()); pt->idade = atoi(Form1->Edit2->Text.c_str()); pt->prox = nova(); } else insere(pt->prox); return (pt); } //---------------------------------------------------- __fastcall TForm1::TForm1(TComponent Owner) : TForm(Owner) { inicio = ALOCA; proximo = ALOCA; } //---------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { proximo = insere(proximo); }
#define ALOCA (struct aluno *) malloc(sizeof(struct aluno))
struct aluno { char nome[20]; int idade; struct aluno *prox; struct aluno *ant; }; struct aluno *registro; struct aluno *inicio; struct aluno *ultimo; struct aluno *pos; //------------------------------------------------------------------------- struct aluno *nova(void) { struct aluno x; x = ALOCA; x->ant = registro; x->prox = 0; ultimo = x; return (x); } //------------------------------------------------------------------------- struct aluno insere(struct aluno *pt) { if (pt->prox == NULL) {
strcpy(pt->nome,Form1->Edit1->Text.c_str()); pt->idade = atoi(Form1->Edit2->Text.c_str()); pt->prox = nova(); } else { insere(pt->prox); } return (pt->prox); } //------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { inicio = registro = ALOCA; } //------------------------------------------------------------------------- -- void __fastcall TForm1::bInsereClick(TObject *Sender) { registro = insere(registro); Edit1->Text = ""; Edit2->Text = ""; } //------------------------------------------------------------------------- void __fastcall TForm1::bApagaClick(TObject *Sender) { free(registro); Close(); } //------------------------------------------------------------------------- void __fastcall TForm1::bAnteriorClick(TObject *Sender) { pos = (registro->ant != NULL)? registro->ant:ultimo; Edit1->Text = pos->nome; Edit2->Text = pos->idade; registro = pos; } //-------------------------------------------------------------------------