Ir ao conteúdo
  • Cadastre-se

Ivan Santos_607246

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Tudo que Ivan Santos_607246 postou

  1. Cada trem que chega na direção A é manobrado e seus vagões continuam na direção B, reorganizados conforme o chefe da estação deseja. Ao chegar pelo lado A, cada vagão é desconectado e vai até a estação e depois segue para a direção B, para ser conectado na segunda locomotiva. Você pode desconectar quantos trens deseja na estação, mas o vagão que entra na estação só pode sair pelo lado B e uma vez que ele sai, não pode mais entrar novamente. exemplo de entrada Saida IIIRIRRR 4 e t d a d a t e 5 o s t a p IIIIIRRR Impossível p a t o s Meu codigo ta com algum erro de logica se alguem achar por favor avise #include <stdio.h> #include <stdlib.h> typedef struct Vagao vagao; struct Vagao{ char c; vagao *prox; }; typedef struct pilha Pilha; struct pilha{ vagao *topo; }; typedef struct Fila fila; struct Fila{ vagao *ini, *fim; }; fila *cria_fila(){ fila *novo = (fila *)malloc(sizeof(fila)); novo->ini = novo->fim = NULL; return novo; } Pilha *cria_pilha(){ Pilha *novo = (Pilha *)malloc(sizeof(Pilha)); novo->topo = NULL; return novo; } vagao *cria_vagao(char c){ vagao *novo = (vagao *)malloc(sizeof(vagao)); novo->prox = NULL; novo->c = c; return novo; } void insere_fila(fila *fil, char c){ vagao *novo = cria_vagao©; if(fil->fim == NULL){ fil->ini = fil->fim = novo; } else{ fil->fim->prox = novo; fil->fim = novo; } } void libera_fila(fila *fil){ vagao *aux; while(fil->ini != NULL){ aux = fil->ini; fil->ini = fil->ini->prox; free(aux); } free(fil); } void push(Pilha *plh, char c){ vagao *novo = cria_vagao©; if(plh->topo == NULL){ plh->topo = novo; } else{ novo->prox = plh->topo; plh->topo = novo; } } void pop(Pilha *plh){ vagao *aux; if(plh->topo == NULL){ return; } else{ aux = plh->topo; plh->topo = plh->topo->prox; free(aux); return; } } void libera_pilha(Pilha *plh){ vagao *aux; if(plh == NULL) return; while(plh->topo != NULL){ aux = plh->topo; plh->topo = plh->topo->prox; free(aux); } free(plh); } void retira_vagao(fila *fil){ vagao *aux; aux = fil->ini; fil->ini = fil->ini->prox; free(aux); } int main(){ int n, i; char *saida, c; fila *entrada; Pilha *plh; scanf("%d", &n); getchar(); while(n != 0){ entrada = cria_fila(); plh = cria_pilha(); saida = (char *)malloc(n*sizeof(char)); for(i=0;i<n;i++){ scanf("%c", &c); getchar(); insere_fila(entrada, c); } for(i=0;i<n;i++){ scanf("%c", &saida); getchar(); } for(i=0;i<n;i++){ if(plh->topo != NULL && plh->topo->c == saida){ pop(plh); printf("R"); } else{ while(entrada->ini != NULL && entrada->ini->c != saida){ printf("I"); push(plh, entrada->ini->c); retira_vagao(entrada); } if(entrada->ini == NULL ){ printf(" Impossible"); break; } else{ printf("IR"); retira_vagao(entrada); } } } printf("\n"); free(saida); libera_pilha(plh); libera_fila(entrada); scanf("%d", &n); getchar(); } return 0; }
  2. Galera estou com um problema numa funcao que faz a leitura de uma imagem ppm.... O erro provavelmente esta na hora da alocacao de memoria. Alguem sabe com consertar isso? #include <stdio.h> #include <stdlib.h> typedef struct _cor { //Essa struct é onde vão ficar armazenados os indices de cor da matriz. int val[3]; //0 = Vermelho } Cor; //1 = Verde //2 = Azul typedef struct _colorimage { int nx,ny; /* dimensoes da imagem */ Cor **cor; /* matriz com a cor dos pixels */ int tamanho_maximo; // ate onde vai a intensidade dos pixels char cabecalho[2]; //cabecalho que vem em TODAS as imagens ppm... para ver isso é só abrir a imagem com um bloco de notas } ColorImage; ColorImage Leitura(char*Nome_Da_Imagem) { //Essa funcao vai fazer a leitura de uma imagem... lembra que a imagem é uma matriz FILE *img; //ponteiro pro arquivo int i,j; int linhas,colunas,max;//variaveis auxiliares para guardar os dados ColorImage ppm; // "objeto" que vai apontar pra matriz que vai guardar os dados da imagem img = fopen(Nome_Da_Imagem,"r"); //abre a imagem if(img == NULL){ printf("Erro ao abrir imagem\n"); exit(0); } fscanf(img,"%s %d%d%d",ppm.cabecalho,&linhas, &colunas, &max); //aqui é onde é feita a leitura dos dados inciais da imagem(As primeiras 4 linhas) ppm.nx = colunas; //guarda a informação das colunas DENTRO da variável das matrizes ppm.ny = linhas; //mesma coisa, porém com as linhas ppm.tamanho_maximo = max; //intensidade máxima dos pixels (na maioria dos casos é até 255) ppm.cor = (Cor**)malloc(sizeof(Cor*)* colunas); //alocação dinâmica para a matriz das cores (bidimensional até o momento) i=0; while(i<linhas){ ppm.cor = (Cor*)malloc(sizeof(Cor) * colunas); //alocação i++; } printf("Errooooo2\n"); int k; for(i=0;i<linhas;i++){ //aqui é o pulo do gato... uuma imagem RGB é uma matriz tridimensional, onde apenas UM pixel da imagem é formado por 3 tons diferentes(RED, GREEN, BLUE) for(j=0;j<colunas;j++){ //tenta sacar esse loop.... lembra daquela struct de índices lá em cima, que armazena os valores "0,1,2" for(k=0;k<3;k++){ fscanf(img,"%d",&ppm.cor[j].val[k]); //se entender isso aqui entendeu tudo } } } fclose(img); return ppm; } int main() { ColorImage ImagemBase; char nome_do_arquivo_entrada[500]; printf("Insira o endereco da imagem: "); scanf("%s", nome_do_arquivo_entrada); printf("\n"); ImagemBase = Leitura(nome_do_arquivo_entrada); }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!