OBI - alguém participou? (além de mim?)

15 respostas
R

Alguém participou da OBI 2004 além de mim aqui no forum?


Para quem não sabe a OBI - Olimpiada Brasileira de Informática é um evento que ocorre todo ano. São aceitos competidores com no maximo 21 aos e cursando até o primeiro modulo da ensino superior


http://olimpiada.ic.unicamp.br

15 Respostas

C

Eu não fui porque não sei programar em C. :oops: :oops: :oops:
Pascal até que entendo (um pouco, mas o suficiente). Mas ir lá só sabendo Pascal é pedir pra ser massacrado :serra: :lol:

J

Bah, nem sabia que existia isso ai meu… hahaha,
pede ai pro pessoal divulgar melhor isso… garanto que qause ninguem conhece… sempre ouvi falar de Olimpiada de Fisica, Olimpiada de Quimica mas nunca dessas ai =)

cya!

R

“Candahar”:
Eu não fui porque não sei programar em C. :oops: :oops: :oops:
Pascal até que entendo (um pouco, mas o suficiente). Mas ir lá só sabendo Pascal é pedir pra ser massacrado :serra: :lol:

não fale mal do pascal!

dos 30 primeiros, 20 fizeram com Pascal!

incluse o nerd de fortaleza que ficou em primeiro!

C

8O 8O 8O
Ow… é sério isso mesmo?! Os primeiros montaram o algoritmo com Pascal?!
Nossa… eu nem acompanhei os resultados…

M

i hate pascal. … haehaeh, cara, eu quase tinha um troço na minha primeira cadeira de programação, q era com pascal… aqueles BEGIN END não tem quem aguente, em coisa mais simples q { } ??? e as chaves ainda representam comentários no pascal!!! eu ia a loucura hahahaha

D

Nossa… pascal foi algo q eu fiz questao de esquecer… juntamente com clipper hauhauah… trash demais!!!

C

Owwww… não falem mal do Pascal… :naonao:
Pascal não é aquelas coisas, MAS temos que reconhecer a importância dessa linguagem… :bocao:

M

é… com certeza, cada linguagem com sua importancia em um tempo da história, assim como Java é hj muito quente, pode ser fonte de piadas daqui a 10 anos… mas o C do tempo de pascal, e vai comparar quantas linhas de código tu escreve pra fazer um ponteiro ou uma struct em C, com o ponteiro e o registro de pascal heheheh :lol:

R

aff…
não adianta
programadores de linguagens avançadas são arrogantes com linguagens usadas para se ensinar a programar…

só pq ja sabem programar ridicularizam liguagens simples como pascal e clipper…

tsc tsc tsc…

pascal cumpre bem o seu propósito!

foi feito com o objetivo educacional!

imagine uma pessoa tendo que aprender a programar em Java!
ela, ao mesmo tempo que tem que aprender sobre as coisas básicas sobre programção normal tendo que aprender sobre herança, polimorfismo, etc…

Não xinguem o Pascal

vou levar para o lado pessoal!

J

E ai microfilo?

Seus problemas acabaram… tenho dois programas implementando uma pilha com alocação dinâmica de memória em Pascal e C.

Concordo com vc, quanto a falar mal de Pascal e C tb… vou ficar vernoso em… :twisted: :grin: :grin: :grin: :grin:

O código abaixo é uma UNIT em pascal que implementa um pilha usando alocação dinâmica de memória… Não reparre a lógica, fiz este programa no 2º ano de faculdade, fazem exatamente 3 anos que eu fiz…

{IMPLEMENTACAO DE PILHA COM ALOCACAO DINAMICA DE MEMORIA}

Unit UPilha;

interface

type
    tipoPilha = integer;
    pPilha = ^no;
    no = record
          elemento :tipoPilha;
          proximo  :pPilha;
    end;

procedure inicializar (var top :pPilha);
function pilhaCheia :boolean;
function empilhar (var top :pPilha; num :tipoPilha) :boolean;
function pilhaVazia (top :pPilha) :boolean;
function desempilhar (var top :pPilha; var num :tipoPilha) :boolean;
function mostrarTopo (top :pPilha; var num :tipoPilha) :boolean;

implementation

{DECLARA INICIALMENTE O PONTEIRO TOPO COMO NULO E ALOCA UM ESPACO P/ AUX}
procedure inicializar (var top :pPilha);

begin
     top := NIL;
end;

{VERIFICA SE E POSSIVEL EMPILHAR UM ELEMENTO}
function pilhaCheia :boolean;

begin
     pilhaCheia := MAXAVAIL >= SIZEOF (no);
end;


{EMPILHA UM NUMERO ESPECIFICADO PELO USUARIO}
function empilhar (var top :pPilha; num :tipoPilha) :boolean;

var
   pil :pPilha;

begin
     if pilhaCheia then
        begin
             new (pil);
             pil^.proximo := top;
             pil^.elemento := num;
             top := pil;
             empilhar := true;
        end
     else
             empilhar := false;
end;

{VERIFICA SE A PILHA ESTA VAZIA}
function pilhaVazia (top :pPilha) :boolean;

begin
     pilhaVAzia := top <> NIL;
end;

{DESEMPILHA O ELEMENTO NO TOPO}
function desempilhar (var top :pPilha; var num :tipoPilha) :boolean;

var
   aux :pPilha;

begin
     if pilhaVazia (top) then
       begin
            num := top^.elemento;
            aux := top;
            top := aux^.proximo;
            dispose (aux);
            desempilhar := true;
       end
     else
            desempilhar := false;
end;

{MOSTRA O ELEMENTO NO TOPO}
function mostrarTopo (top :pPilha; var num :tipoPilha) :boolean;

begin
     if pilhaVazia (top) then
       begin
            num := top^.elemento;
            mostrarTopo := true;
       end
     else
            mostrarTopo := false;
end;

end.

Este tb foi no 2º ano. Não sabia criar biblioteca em C, então foi tudo junto

//LISTA COM ALOCACAO DINAMICA DE MEMORIA (PADRAO ANSI), SENDO IMPLEMENTADO O
//CONCEITO DE PILHA.
//IMPLEMENTACAO FEITA POR FABIO VENDRAMIN GUIMARAES.
//ENGENHARIA DA COMPUTACAO, 24/03/2001 - 00:42 hs.
//PROFESSOR: EDUARDO COTRIN, MATERIA: LTPII.
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

//TIPO DO ELEMENTO DA PILHA
typedef int T_elemento;

//ESTRUTURA DO NO: LISTA SIMPLESMENTE ENCADEADA
struct No {
	T_elemento info;
	struct No  *proximo;
	  };

typedef struct No Ponteiro_No;

//OBJETO PILHA
typedef struct {
      Ponteiro_No *topo;
      int         qtde;
	       } Pilha;

//PROTOTIPOS DOS METODOS DO OBJETO PILHA
void INICIALIZA_PILHA (Pilha *p);
int PILHA_VAZIA (Ponteiro_No top);
Ponteiro_No* PILHA_CHEIA (void);
int EMPILHAR (Pilha *p, T_elemento elemento);
int DESEMPILHAR (Pilha *p, T_elemento *elemento);
int QTDE_ELEMENTOS_PILHA (Pilha *p);
int ELEMENTO_TOPO (Pilha *p, T_elemento *elemento);
int PESQUISA (Pilha *p, T_elemento chave);

//BLOCO DE COMANDO PRINCIPAL
void main (void)

{  Pilha      pil;
   T_elemento num;
   char       opcao;

   INICIALIZA_PILHA (&pil);
   do {
	clrscr();
	puts ("Menu de Op?Æo da Pilha");
	puts ("1 - Inserir");
	puts ("2 - Remover");
	puts ("3 - Elemento do Topo");
	puts ("4 - Quantidade de Elementos");
	puts ("5 - Pesquisar elemento");
	puts ("6 - Sair");
	opcao = getche();
	switch (opcao)  {
	    case '1' : {
			  puts ("Digite o elemento: ");
			  scanf ("%i", &num);
			  if (EMPILHAR (&pil, num))
			     puts ("Elemento empilhado com sucesso");
			   else
			     puts ("Nao ha memoria dispon¡vel");
			  getche();
			  break;
		       }

	    case '2' : {
			  if (DESEMPILHAR (&pil, &num))
			     printf ("Numero desempilhado: %i", num);
			   else
			     puts ("Pilha vazia");
			  getche();
			  break;
		       }

	    case '3' : {
			  if (ELEMENTO_TOPO (&pil, &num))
			     printf ("Elemento no topo: %i", num);
			   else
			     puts ("Pilha vazia");
			  getche();
			  break;
		       }

	    case '4' : {
			  printf ("Quantidade de Elementos na pilha: %i", QTDE_ELEMENTOS_PILHA (&pil));
			  getche();
			  break;
		       }

	    case '5' : {
			  puts ("Digite o elemento: ");
			  scanf ("%i", &num);
			  if (PESQUISA (&pil, num))
			     puts ("Elemento existente na pilha");
			   else
			     puts ("Elemento nao existe na pilha");
			  getche();
			  break;
		       }

			}
      }
   while (opcao != '6');
}

//BLOCO DOS METODOS
//****************************************************************************
//INICIALIZA: A PILHA VAZIA E QUANTIDADE NULA
void INICIALIZA_PILHA (Pilha *p)

{
     p -> topo = NULL;
     p -> qtde = 0;
}
//****************************************************************************
/*VERIFICA SE A PILHA ESTA VAZIA, RETORNANDO 0 CASO ESTEJA VAZIA E 1 SE TIVER
  ELEMENTOS*/
int PILHA_VAZIA (Ponteiro_No *top)

{
    return top != NULL;
}
//****************************************************************************
/*VERIFICA SE A ESPACO PARA ALOCACAO, RETORNANDO NULL CASO NAO HAJA E RETORNAN-
  DO O ENDERECO INICIAL CASO HAJA ESPACO*/
Ponteiro_No *PILHA_CHEIA (void)

{
    return (Ponteiro_No*) malloc (sizeof (Ponteiro_No));
}
//****************************************************************************
/*EMPILHA UM ELEMENTO, E RETORNA 1 SE FOI POSSIVEL A INSERCAO E 0 CASO CONTRA-
  RIO*/
int EMPILHAR (Pilha *p, T_elemento elemento)

{
    Ponteiro_No *novo;

    if ((novo = PILHA_CHEIA ()) != NULL)
       {
	 novo -> proximo = p -> topo;
	 novo -> info = elemento;
	 p -> topo = novo;
	 ++ p -> qtde;
	 return 1;
       }
     else
	 return 0;
}
//****************************************************************************
/*RETIRA O ELEMENTO QUE ESTIVER NO TOPO E RETORNA 1 CASO FOR RETIRADO COM SU-
  CESSO E 0 CASO CONTRARIO*/
int DESEMPILHAR (Pilha *p, T_elemento *elemento)

{
    Ponteiro_No *remover;

    if (PILHA_VAZIA (p -> topo))
       {
	 *elemento = p -> topo -> info;
	 remover = p -> topo;
	 p -> topo = p -> topo -> proximo;
	 free (remover);
	 -- p -> qtde;
	 return 1;
       }
      else
	 return 0;
}
//****************************************************************************
//RETORNA A QUANTIDADE DE ELEMENTOS NA PILHA
int QTDE_ELEMENTOS_PILHA (Pilha *p)

{
    return p -> qtde;
}
//****************************************************************************
/*RETORNA POR REFERENCIA O ELEMENTO QUE ESTIVER NO TOPO, RETORNANDO NA FUNCAO
  1 CASO A PILHA TENHA ELEMENTOS E CASO CONTRARIO RETORNA 0, PILHA VAZIA*/
int ELEMENTO_TOPO (Pilha *p, T_elemento *elemento)

{
    return PILHA_VAZIA (p -> topo) ? *elemento = p -> topo -> info, 1 : 0;
}

/*PESQUISA UM ELEMENTO NA PILHA, RETORNANDO 1 SE EXISTIR O ELEMENTO E 0 CASO
  CONTRARIO*/
int PESQUISA (Pilha *p, T_elemento chave)

{
    Ponteiro_No *aux;

    for (aux = p -> topo; (aux != NULL) && (aux -> info != chave); aux = aux -> proximo);
    return (aux != NULL) && (aux -> info == chave) ? 1 : 0;
}

É isso ae… :grin: :grin: :grin: :grin:

R

vc fez no segundo ano?

lalalalalala!

eu fiz isso no primeiro ano!

lalalalalaalal!

hauahuahua

zuera…

J

“microfilo”:
vc fez no segundo ano?

lalalalalala!

eu fiz isso no primeiro ano!

lalalalalaalal!

hauahuahua

zuera…

Isso mesmo… no 2º ano de Engenharia da Computação.

Vc fez no 1º ano do que?

R

:sad:
tb não precisa humilhar… :amo:
:sad:

huauahauhauahuauha

J

tb não precisa humilhar… :amo:
:sad:

huauahauhauahuauha[/quote]

Que que é isso kara… :slight_smile:

Só perguntei pra saber… :wink:

E microfilo… hehehehehehehehehehe

R

vai esperando!

um dia eu chego ai!

Criado 25 de junho de 2004
Ultima resposta 29 de jun. de 2004
Respostas 15
Participantes 6