Essas são as implementações dos nossos desafios já devidamente comentadas!
E hoje é o grande dia, daqui a pouco nós vamos apresentar o nosso PIC !
Esse blog foi criado com o intuito de ser o nosso diário de bordo, ajudando na execução do trabalho do PIC. A equipe é formada por: Elias Augusto Paulino, Lidiane Marcelino Carvalho, Rafaela Zanin Ferreira , Phillipe Gandini Baldim, alunos do 6°período do Curso Bacharelado em Ciência Da Computação do Centro Universitário do Sul de Minas - UNIS. O PIC terá como objetivo:a realização de um artigo acadêmico buscando auxiliar posteriormente a elaboração do TCC.
terça-feira, 31 de maio de 2011
Implementações comentadas! Contêiner!
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
system("color f0");
//A, B e C representam as dimensões do contêiner; X, Y e Z representam as dimensões do navio
unsigned int A,B,C,X,Y,Z;
scanf("%u %u %u %u %u %u",&A,&B,&C,&X,&Y,&Z);
//Imprime na tela o resultado da fórmula, ou seja, a saída
printf("%u\n",(X/A)*(Y/B)*(Z/C));
return 0;
}
#include <stdlib.h>
int main(void)
{
system("color f0");
//A, B e C representam as dimensões do contêiner; X, Y e Z representam as dimensões do navio
unsigned int A,B,C,X,Y,Z;
scanf("%u %u %u %u %u %u",&A,&B,&C,&X,&Y,&Z);
//Imprime na tela o resultado da fórmula, ou seja, a saída
printf("%u\n",(X/A)*(Y/B)*(Z/C));
return 0;
}
Implementações comentadas! Contêiner!
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
system("color f0");
//A, B e C representam as dimensões do contêiner; X, Y e Z representam as dimensões do navio
unsigned int A,B,C,X,Y,Z;
scanf("%u %u %u %u %u %u",&A,&B,&C,&X,&Y,&Z);
//Imprime na tela o resultado da fórmula, ou seja, a saída
printf("%u\n",(X/A)*(Y/B)*(Z/C));
return 0;
}
#include <stdlib.h>
int main(void)
{
system("color f0");
//A, B e C representam as dimensões do contêiner; X, Y e Z representam as dimensões do navio
unsigned int A,B,C,X,Y,Z;
scanf("%u %u %u %u %u %u",&A,&B,&C,&X,&Y,&Z);
//Imprime na tela o resultado da fórmula, ou seja, a saída
printf("%u\n",(X/A)*(Y/B)*(Z/C));
return 0;
}
Implementações comentadas! Quadrado Aritmético!
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
system("color f0");
// Declaração das variáveis, tamanho da ordem da matriz, soma do quadrado aritmético, contador e índice
unsigned int N,S,cont=1,j;
scanf("%u %u", &N,&S);
// Declaração de uma variável solução que recebe o valor da fórmula
int solucao=S-N*(1+N*N)/2;
// Estrutura que por meio da fórmula monta o quadrado aritmético
for (S=0; S<N; S++) //Reutilização da variável S como índice
{
for (j=0; j<N; j++)
//Se linha igual a 0 e solução menor que 0
if (S == 0 && solucao < 0)
printf("%d ", cont++ + solucao);
else
//Se linha igual ao tamanho do quadrado menos 1 e solução maior que 0
if (S == N-1 && solucao > 0)
printf("%d ", cont++ + solucao);
else
printf("%d ", cont++);
printf("\n");
}
return 0;
}
#include <stdlib.h>
int main(void)
{
system("color f0");
// Declaração das variáveis, tamanho da ordem da matriz, soma do quadrado aritmético, contador e índice
unsigned int N,S,cont=1,j;
scanf("%u %u", &N,&S);
// Declaração de uma variável solução que recebe o valor da fórmula
int solucao=S-N*(1+N*N)/2;
// Estrutura que por meio da fórmula monta o quadrado aritmético
for (S=0; S<N; S++) //Reutilização da variável S como índice
{
for (j=0; j<N; j++)
//Se linha igual a 0 e solução menor que 0
if (S == 0 && solucao < 0)
printf("%d ", cont++ + solucao);
else
//Se linha igual ao tamanho do quadrado menos 1 e solução maior que 0
if (S == N-1 && solucao > 0)
printf("%d ", cont++ + solucao);
else
printf("%d ", cont++);
printf("\n");
}
return 0;
}
Implementações comentadas! Ir e Vir!
#include <stdio.h>
#include <stdlib.h>
//Estruturas para a criação de filas
struct sNo
{
int valor;
struct sNo *prox;
};
typedef struct sNo Tno;
struct sFila
{
Tno *H,*T;
};
//Função para inserir valor na fila
inserir(struct sFila *L,int V)
{
Tno *P;
P=(Tno*)malloc(sizeof(Tno));
if(!P)
printf("Erro de memoria!\n");
else
{
P->valor=V;
P->prox= NULL;
if(!(L->H)&&!(L->T))
{
L->H=P;
L->T=P;
}
else
{
L->T->prox=P;
L->T=P;
}
}
}
//Função para remover um valor de uma fila
remover(struct sFila *L)
{
Tno *P;
P=L->H;
L->H=L->H->prox;
if(L->H==NULL)
L->T=NULL;
free(P);
}
//Zerar a matriz
void matriz_nula(int **matriz,int tamanho)
{
int i,j;
for(i=0; i<tamanho; i++)
for(j=0; j<tamanho; j++)
matriz[i][j]=0;
}
int main(void)
{
//Declaração de duas filas. Sendo G para mostrar o resultado final
struct sFila G,fila;
fila.H=NULL;
fila.T=NULL;
G.H=NULL;
G.T=NULL;
Tno *Pont;
int N,M,v,w,p,**matriz,**matriz2,ind,acm,i,j;
system("color f0");
for(;;)
{
scanf("%d %d",&N,&M);
matriz=(int **)calloc(N,sizeof(int*));
for(i=0; i<N; i++)
matriz[i] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz,N);
if(N==0&&M==0)
break;
//Estrutura que recebe os pontos de interseção, rua e tipo de rua
//Insere a conectividade das interseções na matriz
while(M--)
{
scanf("%d %d %d",&v,&w,&p);
if(p == 1)
matriz[v-1][w-1] = 1;
else
{
matriz[v-1][w-1] = 1;
matriz[w-1][v-1] = 1;
}
}
//Estrutura para verificar se conexão é satisfeita
for(i=0; i<N; i++)
{
matriz2=(int **)calloc(N,sizeof(int*));
for(j=0; j<N; j++)
matriz2[j] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz2,N);
//Estrutura para determinar qual linha será verificada as interseções
for(j=0; j<N; j++)
{
if(matriz[i][j]&&!matriz2[i][j]&i!=j)
{
inserir(&fila,j);
matriz2[i][j]=1;
}
}
//Estrutura inserir valor 1 na matriz caso as interseções estejam ligadas
while(!((fila.H==NULL)&&(fila.T==NULL)))
{
ind=fila.H->valor;
matriz[i][ind]=1;
for(j=0; j<N; j++)
{
if(matriz[ind][j]&&!matriz2[ind][j]&&ind!=j)
{
inserir(&fila,j);
matriz2[ind][j]=1;
}
}
remover(&fila);
}
}
acm=0;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
acm+=matriz[i][j];
if(acm == N*N)
inserir(&G,1);
else
inserir(&G,0);
for(i=0; i<N; i++)
{
free(matriz[i]);
free(matriz2[i]);
}
free(matriz);
free(matriz2);
}
Pont=G.H;
//Saída
while(G.H!=NULL)
{
printf("%d\n",G.H->valor);
remover(&G);
}
return 0;
}
#include <stdlib.h>
//Estruturas para a criação de filas
struct sNo
{
int valor;
struct sNo *prox;
};
typedef struct sNo Tno;
struct sFila
{
Tno *H,*T;
};
//Função para inserir valor na fila
inserir(struct sFila *L,int V)
{
Tno *P;
P=(Tno*)malloc(sizeof(Tno));
if(!P)
printf("Erro de memoria!\n");
else
{
P->valor=V;
P->prox= NULL;
if(!(L->H)&&!(L->T))
{
L->H=P;
L->T=P;
}
else
{
L->T->prox=P;
L->T=P;
}
}
}
//Função para remover um valor de uma fila
remover(struct sFila *L)
{
Tno *P;
P=L->H;
L->H=L->H->prox;
if(L->H==NULL)
L->T=NULL;
free(P);
}
//Zerar a matriz
void matriz_nula(int **matriz,int tamanho)
{
int i,j;
for(i=0; i<tamanho; i++)
for(j=0; j<tamanho; j++)
matriz[i][j]=0;
}
int main(void)
{
//Declaração de duas filas. Sendo G para mostrar o resultado final
struct sFila G,fila;
fila.H=NULL;
fila.T=NULL;
G.H=NULL;
G.T=NULL;
Tno *Pont;
int N,M,v,w,p,**matriz,**matriz2,ind,acm,i,j;
system("color f0");
for(;;)
{
scanf("%d %d",&N,&M);
matriz=(int **)calloc(N,sizeof(int*));
for(i=0; i<N; i++)
matriz[i] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz,N);
if(N==0&&M==0)
break;
//Estrutura que recebe os pontos de interseção, rua e tipo de rua
//Insere a conectividade das interseções na matriz
while(M--)
{
scanf("%d %d %d",&v,&w,&p);
if(p == 1)
matriz[v-1][w-1] = 1;
else
{
matriz[v-1][w-1] = 1;
matriz[w-1][v-1] = 1;
}
}
//Estrutura para verificar se conexão é satisfeita
for(i=0; i<N; i++)
{
matriz2=(int **)calloc(N,sizeof(int*));
for(j=0; j<N; j++)
matriz2[j] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz2,N);
//Estrutura para determinar qual linha será verificada as interseções
for(j=0; j<N; j++)
{
if(matriz[i][j]&&!matriz2[i][j]&i!=j)
{
inserir(&fila,j);
matriz2[i][j]=1;
}
}
//Estrutura inserir valor 1 na matriz caso as interseções estejam ligadas
while(!((fila.H==NULL)&&(fila.T==NULL)))
{
ind=fila.H->valor;
matriz[i][ind]=1;
for(j=0; j<N; j++)
{
if(matriz[ind][j]&&!matriz2[ind][j]&&ind!=j)
{
inserir(&fila,j);
matriz2[ind][j]=1;
}
}
remover(&fila);
}
}
acm=0;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
acm+=matriz[i][j];
if(acm == N*N)
inserir(&G,1);
else
inserir(&G,0);
for(i=0; i<N; i++)
{
free(matriz[i]);
free(matriz2[i]);
}
free(matriz);
free(matriz2);
}
Pont=G.H;
//Saída
while(G.H!=NULL)
{
printf("%d\n",G.H->valor);
remover(&G);
}
return 0;
}
Implementações comentadas! Ir e Vir!
#include <stdio.h>
#include <stdlib.h>
//Estruturas para a criação de filas
struct sNo
{
int valor;
struct sNo *prox;
};
typedef struct sNo Tno;
struct sFila
{
Tno *H,*T;
};
//Função para inserir valor na fila
inserir(struct sFila *L,int V)
{
Tno *P;
P=(Tno*)malloc(sizeof(Tno));
if(!P)
printf("Erro de memoria!\n");
else
{
P->valor=V;
P->prox= NULL;
if(!(L->H)&&!(L->T))
{
L->H=P;
L->T=P;
}
else
{
L->T->prox=P;
L->T=P;
}
}
}
//Função para remover um valor de uma fila
remover(struct sFila *L)
{
Tno *P;
P=L->H;
L->H=L->H->prox;
if(L->H==NULL)
L->T=NULL;
free(P);
}
//Zerar a matriz
void matriz_nula(int **matriz,int tamanho)
{
int i,j;
for(i=0; i<tamanho; i++)
for(j=0; j<tamanho; j++)
matriz[i][j]=0;
}
int main(void)
{
//Declaração de duas filas. Sendo G para mostrar o resultado final
struct sFila G,fila;
fila.H=NULL;
fila.T=NULL;
G.H=NULL;
G.T=NULL;
Tno *Pont;
int N,M,v,w,p,**matriz,**matriz2,ind,acm,i,j;
system("color f0");
for(;;)
{
scanf("%d %d",&N,&M);
matriz=(int **)calloc(N,sizeof(int*));
for(i=0; i<N; i++)
matriz[i] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz,N);
if(N==0&&M==0)
break;
//Estrutura que recebe os pontos de interseção, rua e tipo de rua
//Insere a conectividade das interseções na matriz
while(M--)
{
scanf("%d %d %d",&v,&w,&p);
if(p == 1)
matriz[v-1][w-1] = 1;
else
{
matriz[v-1][w-1] = 1;
matriz[w-1][v-1] = 1;
}
}
//Estrutura para verificar se conexão é satisfeita
for(i=0; i<N; i++)
{
matriz2=(int **)calloc(N,sizeof(int*));
for(j=0; j<N; j++)
matriz2[j] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz2,N);
//Estrutura para determinar qual linha será verificada as interseções
for(j=0; j<N; j++)
{
if(matriz[i][j]&&!matriz2[i][j]&i!=j)
{
inserir(&fila,j);
matriz2[i][j]=1;
}
}
//Estrutura inserir valor 1 na matriz caso as interseções estejam ligadas
while(!((fila.H==NULL)&&(fila.T==NULL)))
{
ind=fila.H->valor;
matriz[i][ind]=1;
for(j=0; j<N; j++)
{
if(matriz[ind][j]&&!matriz2[ind][j]&&ind!=j)
{
inserir(&fila,j);
matriz2[ind][j]=1;
}
}
remover(&fila);
}
}
acm=0;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
acm+=matriz[i][j];
if(acm == N*N)
inserir(&G,1);
else
inserir(&G,0);
for(i=0; i<N; i++)
{
free(matriz[i]);
free(matriz2[i]);
}
free(matriz);
free(matriz2);
}
Pont=G.H;
//Saída
while(G.H!=NULL)
{
printf("%d\n",G.H->valor);
remover(&G);
}
return 0;
}
#include <stdlib.h>
//Estruturas para a criação de filas
struct sNo
{
int valor;
struct sNo *prox;
};
typedef struct sNo Tno;
struct sFila
{
Tno *H,*T;
};
//Função para inserir valor na fila
inserir(struct sFila *L,int V)
{
Tno *P;
P=(Tno*)malloc(sizeof(Tno));
if(!P)
printf("Erro de memoria!\n");
else
{
P->valor=V;
P->prox= NULL;
if(!(L->H)&&!(L->T))
{
L->H=P;
L->T=P;
}
else
{
L->T->prox=P;
L->T=P;
}
}
}
//Função para remover um valor de uma fila
remover(struct sFila *L)
{
Tno *P;
P=L->H;
L->H=L->H->prox;
if(L->H==NULL)
L->T=NULL;
free(P);
}
//Zerar a matriz
void matriz_nula(int **matriz,int tamanho)
{
int i,j;
for(i=0; i<tamanho; i++)
for(j=0; j<tamanho; j++)
matriz[i][j]=0;
}
int main(void)
{
//Declaração de duas filas. Sendo G para mostrar o resultado final
struct sFila G,fila;
fila.H=NULL;
fila.T=NULL;
G.H=NULL;
G.T=NULL;
Tno *Pont;
int N,M,v,w,p,**matriz,**matriz2,ind,acm,i,j;
system("color f0");
for(;;)
{
scanf("%d %d",&N,&M);
matriz=(int **)calloc(N,sizeof(int*));
for(i=0; i<N; i++)
matriz[i] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz,N);
if(N==0&&M==0)
break;
//Estrutura que recebe os pontos de interseção, rua e tipo de rua
//Insere a conectividade das interseções na matriz
while(M--)
{
scanf("%d %d %d",&v,&w,&p);
if(p == 1)
matriz[v-1][w-1] = 1;
else
{
matriz[v-1][w-1] = 1;
matriz[w-1][v-1] = 1;
}
}
//Estrutura para verificar se conexão é satisfeita
for(i=0; i<N; i++)
{
matriz2=(int **)calloc(N,sizeof(int*));
for(j=0; j<N; j++)
matriz2[j] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz2,N);
//Estrutura para determinar qual linha será verificada as interseções
for(j=0; j<N; j++)
{
if(matriz[i][j]&&!matriz2[i][j]&i!=j)
{
inserir(&fila,j);
matriz2[i][j]=1;
}
}
//Estrutura inserir valor 1 na matriz caso as interseções estejam ligadas
while(!((fila.H==NULL)&&(fila.T==NULL)))
{
ind=fila.H->valor;
matriz[i][ind]=1;
for(j=0; j<N; j++)
{
if(matriz[ind][j]&&!matriz2[ind][j]&&ind!=j)
{
inserir(&fila,j);
matriz2[ind][j]=1;
}
}
remover(&fila);
}
}
acm=0;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
acm+=matriz[i][j];
if(acm == N*N)
inserir(&G,1);
else
inserir(&G,0);
for(i=0; i<N; i++)
{
free(matriz[i]);
free(matriz2[i]);
}
free(matriz);
free(matriz2);
}
Pont=G.H;
//Saída
while(G.H!=NULL)
{
printf("%d\n",G.H->valor);
remover(&G);
}
return 0;
}
Implementações comentadas! Ir e Vir!
#include <stdio.h>
#include <stdlib.h>
//Estruturas para a criação de filas
struct sNo
{
int valor;
struct sNo *prox;
};
typedef struct sNo Tno;
struct sFila
{
Tno *H,*T;
};
//Função para inserir valor na fila
inserir(struct sFila *L,int V)
{
Tno *P;
P=(Tno*)malloc(sizeof(Tno));
if(!P)
printf("Erro de memoria!\n");
else
{
P->valor=V;
P->prox= NULL;
if(!(L->H)&&!(L->T))
{
L->H=P;
L->T=P;
}
else
{
L->T->prox=P;
L->T=P;
}
}
}
//Função para remover um valor de uma fila
remover(struct sFila *L)
{
Tno *P;
P=L->H;
L->H=L->H->prox;
if(L->H==NULL)
L->T=NULL;
free(P);
}
//Zerar a matriz
void matriz_nula(int **matriz,int tamanho)
{
int i,j;
for(i=0; i<tamanho; i++)
for(j=0; j<tamanho; j++)
matriz[i][j]=0;
}
int main(void)
{
//Declaração de duas filas. Sendo G para mostrar o resultado final
struct sFila G,fila;
fila.H=NULL;
fila.T=NULL;
G.H=NULL;
G.T=NULL;
Tno *Pont;
int N,M,v,w,p,**matriz,**matriz2,ind,acm,i,j;
system("color f0");
for(;;)
{
scanf("%d %d",&N,&M);
matriz=(int **)calloc(N,sizeof(int*));
for(i=0; i<N; i++)
matriz[i] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz,N);
if(N==0&&M==0)
break;
//Estrutura que recebe os pontos de interseção, rua e tipo de rua
//Insere a conectividade das interseções na matriz
while(M--)
{
scanf("%d %d %d",&v,&w,&p);
if(p == 1)
matriz[v-1][w-1] = 1;
else
{
matriz[v-1][w-1] = 1;
matriz[w-1][v-1] = 1;
}
}
//Estrutura para verificar se conexão é satisfeita
for(i=0; i<N; i++)
{
matriz2=(int **)calloc(N,sizeof(int*));
for(j=0; j<N; j++)
matriz2[j] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz2,N);
//Estrutura para determinar qual linha será verificada as interseções
for(j=0; j<N; j++)
{
if(matriz[i][j]&&!matriz2[i][j]&i!=j)
{
inserir(&fila,j);
matriz2[i][j]=1;
}
}
//Estrutura inserir valor 1 na matriz caso as interseções estejam ligadas
while(!((fila.H==NULL)&&(fila.T==NULL)))
{
ind=fila.H->valor;
matriz[i][ind]=1;
for(j=0; j<N; j++)
{
if(matriz[ind][j]&&!matriz2[ind][j]&&ind!=j)
{
inserir(&fila,j);
matriz2[ind][j]=1;
}
}
remover(&fila);
}
}
acm=0;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
acm+=matriz[i][j];
if(acm == N*N)
inserir(&G,1);
else
inserir(&G,0);
for(i=0; i<N; i++)
{
free(matriz[i]);
free(matriz2[i]);
}
free(matriz);
free(matriz2);
}
Pont=G.H;
//Saída
while(G.H!=NULL)
{
printf("%d\n",G.H->valor);
remover(&G);
}
return 0;
}
#include <stdlib.h>
//Estruturas para a criação de filas
struct sNo
{
int valor;
struct sNo *prox;
};
typedef struct sNo Tno;
struct sFila
{
Tno *H,*T;
};
//Função para inserir valor na fila
inserir(struct sFila *L,int V)
{
Tno *P;
P=(Tno*)malloc(sizeof(Tno));
if(!P)
printf("Erro de memoria!\n");
else
{
P->valor=V;
P->prox= NULL;
if(!(L->H)&&!(L->T))
{
L->H=P;
L->T=P;
}
else
{
L->T->prox=P;
L->T=P;
}
}
}
//Função para remover um valor de uma fila
remover(struct sFila *L)
{
Tno *P;
P=L->H;
L->H=L->H->prox;
if(L->H==NULL)
L->T=NULL;
free(P);
}
//Zerar a matriz
void matriz_nula(int **matriz,int tamanho)
{
int i,j;
for(i=0; i<tamanho; i++)
for(j=0; j<tamanho; j++)
matriz[i][j]=0;
}
int main(void)
{
//Declaração de duas filas. Sendo G para mostrar o resultado final
struct sFila G,fila;
fila.H=NULL;
fila.T=NULL;
G.H=NULL;
G.T=NULL;
Tno *Pont;
int N,M,v,w,p,**matriz,**matriz2,ind,acm,i,j;
system("color f0");
for(;;)
{
scanf("%d %d",&N,&M);
matriz=(int **)calloc(N,sizeof(int*));
for(i=0; i<N; i++)
matriz[i] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz,N);
if(N==0&&M==0)
break;
//Estrutura que recebe os pontos de interseção, rua e tipo de rua
//Insere a conectividade das interseções na matriz
while(M--)
{
scanf("%d %d %d",&v,&w,&p);
if(p == 1)
matriz[v-1][w-1] = 1;
else
{
matriz[v-1][w-1] = 1;
matriz[w-1][v-1] = 1;
}
}
//Estrutura para verificar se conexão é satisfeita
for(i=0; i<N; i++)
{
matriz2=(int **)calloc(N,sizeof(int*));
for(j=0; j<N; j++)
matriz2[j] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz2,N);
//Estrutura para determinar qual linha será verificada as interseções
for(j=0; j<N; j++)
{
if(matriz[i][j]&&!matriz2[i][j]&i!=j)
{
inserir(&fila,j);
matriz2[i][j]=1;
}
}
//Estrutura inserir valor 1 na matriz caso as interseções estejam ligadas
while(!((fila.H==NULL)&&(fila.T==NULL)))
{
ind=fila.H->valor;
matriz[i][ind]=1;
for(j=0; j<N; j++)
{
if(matriz[ind][j]&&!matriz2[ind][j]&&ind!=j)
{
inserir(&fila,j);
matriz2[ind][j]=1;
}
}
remover(&fila);
}
}
acm=0;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
acm+=matriz[i][j];
if(acm == N*N)
inserir(&G,1);
else
inserir(&G,0);
for(i=0; i<N; i++)
{
free(matriz[i]);
free(matriz2[i]);
}
free(matriz);
free(matriz2);
}
Pont=G.H;
//Saída
while(G.H!=NULL)
{
printf("%d\n",G.H->valor);
remover(&G);
}
return 0;
}
Implementações comentadas! Ir e Vir!
#include <stdio.h>
#include <stdlib.h>
//Estruturas para a criação de filas
struct sNo
{
int valor;
struct sNo *prox;
};
typedef struct sNo Tno;
struct sFila
{
Tno *H,*T;
};
//Função para inserir valor na fila
inserir(struct sFila *L,int V)
{
Tno *P;
P=(Tno*)malloc(sizeof(Tno));
if(!P)
printf("Erro de memoria!\n");
else
{
P->valor=V;
P->prox= NULL;
if(!(L->H)&&!(L->T))
{
L->H=P;
L->T=P;
}
else
{
L->T->prox=P;
L->T=P;
}
}
}
//Função para remover um valor de uma fila
remover(struct sFila *L)
{
Tno *P;
P=L->H;
L->H=L->H->prox;
if(L->H==NULL)
L->T=NULL;
free(P);
}
//Zerar a matriz
void matriz_nula(int **matriz,int tamanho)
{
int i,j;
for(i=0; i<tamanho; i++)
for(j=0; j<tamanho; j++)
matriz[i][j]=0;
}
int main(void)
{
//Declaração de duas filas. Sendo G para mostrar o resultado final
struct sFila G,fila;
fila.H=NULL;
fila.T=NULL;
G.H=NULL;
G.T=NULL;
Tno *Pont;
int N,M,v,w,p,**matriz,**matriz2,ind,acm,i,j;
system("color f0");
for(;;)
{
scanf("%d %d",&N,&M);
matriz=(int **)calloc(N,sizeof(int*));
for(i=0; i<N; i++)
matriz[i] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz,N);
if(N==0&&M==0)
break;
//Estrutura que recebe os pontos de interseção, rua e tipo de rua
//Insere a conectividade das interseções na matriz
while(M--)
{
scanf("%d %d %d",&v,&w,&p);
if(p == 1)
matriz[v-1][w-1] = 1;
else
{
matriz[v-1][w-1] = 1;
matriz[w-1][v-1] = 1;
}
}
//Estrutura para verificar se conexão é satisfeita
for(i=0; i<N; i++)
{
matriz2=(int **)calloc(N,sizeof(int*));
for(j=0; j<N; j++)
matriz2[j] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz2,N);
//Estrutura para determinar qual linha será verificada as interseções
for(j=0; j<N; j++)
{
if(matriz[i][j]&&!matriz2[i][j]&i!=j)
{
inserir(&fila,j);
matriz2[i][j]=1;
}
}
//Estrutura inserir valor 1 na matriz caso as interseções estejam ligadas
while(!((fila.H==NULL)&&(fila.T==NULL)))
{
ind=fila.H->valor;
matriz[i][ind]=1;
for(j=0; j<N; j++)
{
if(matriz[ind][j]&&!matriz2[ind][j]&&ind!=j)
{
inserir(&fila,j);
matriz2[ind][j]=1;
}
}
remover(&fila);
}
}
acm=0;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
acm+=matriz[i][j];
if(acm == N*N)
inserir(&G,1);
else
inserir(&G,0);
for(i=0; i<N; i++)
{
free(matriz[i]);
free(matriz2[i]);
}
free(matriz);
free(matriz2);
}
Pont=G.H;
//Saída
while(G.H!=NULL)
{
printf("%d\n",G.H->valor);
remover(&G);
}
return 0;
}
#include <stdlib.h>
//Estruturas para a criação de filas
struct sNo
{
int valor;
struct sNo *prox;
};
typedef struct sNo Tno;
struct sFila
{
Tno *H,*T;
};
//Função para inserir valor na fila
inserir(struct sFila *L,int V)
{
Tno *P;
P=(Tno*)malloc(sizeof(Tno));
if(!P)
printf("Erro de memoria!\n");
else
{
P->valor=V;
P->prox= NULL;
if(!(L->H)&&!(L->T))
{
L->H=P;
L->T=P;
}
else
{
L->T->prox=P;
L->T=P;
}
}
}
//Função para remover um valor de uma fila
remover(struct sFila *L)
{
Tno *P;
P=L->H;
L->H=L->H->prox;
if(L->H==NULL)
L->T=NULL;
free(P);
}
//Zerar a matriz
void matriz_nula(int **matriz,int tamanho)
{
int i,j;
for(i=0; i<tamanho; i++)
for(j=0; j<tamanho; j++)
matriz[i][j]=0;
}
int main(void)
{
//Declaração de duas filas. Sendo G para mostrar o resultado final
struct sFila G,fila;
fila.H=NULL;
fila.T=NULL;
G.H=NULL;
G.T=NULL;
Tno *Pont;
int N,M,v,w,p,**matriz,**matriz2,ind,acm,i,j;
system("color f0");
for(;;)
{
scanf("%d %d",&N,&M);
matriz=(int **)calloc(N,sizeof(int*));
for(i=0; i<N; i++)
matriz[i] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz,N);
if(N==0&&M==0)
break;
//Estrutura que recebe os pontos de interseção, rua e tipo de rua
//Insere a conectividade das interseções na matriz
while(M--)
{
scanf("%d %d %d",&v,&w,&p);
if(p == 1)
matriz[v-1][w-1] = 1;
else
{
matriz[v-1][w-1] = 1;
matriz[w-1][v-1] = 1;
}
}
//Estrutura para verificar se conexão é satisfeita
for(i=0; i<N; i++)
{
matriz2=(int **)calloc(N,sizeof(int*));
for(j=0; j<N; j++)
matriz2[j] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz2,N);
//Estrutura para determinar qual linha será verificada as interseções
for(j=0; j<N; j++)
{
if(matriz[i][j]&&!matriz2[i][j]&i!=j)
{
inserir(&fila,j);
matriz2[i][j]=1;
}
}
//Estrutura inserir valor 1 na matriz caso as interseções estejam ligadas
while(!((fila.H==NULL)&&(fila.T==NULL)))
{
ind=fila.H->valor;
matriz[i][ind]=1;
for(j=0; j<N; j++)
{
if(matriz[ind][j]&&!matriz2[ind][j]&&ind!=j)
{
inserir(&fila,j);
matriz2[ind][j]=1;
}
}
remover(&fila);
}
}
acm=0;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
acm+=matriz[i][j];
if(acm == N*N)
inserir(&G,1);
else
inserir(&G,0);
for(i=0; i<N; i++)
{
free(matriz[i]);
free(matriz2[i]);
}
free(matriz);
free(matriz2);
}
Pont=G.H;
//Saída
while(G.H!=NULL)
{
printf("%d\n",G.H->valor);
remover(&G);
}
return 0;
}
Implementações comentadas! Ir e Vir!
#include <stdio.h>
#include <stdlib.h>
//Estruturas para a criação de filas
struct sNo
{
int valor;
struct sNo *prox;
};
typedef struct sNo Tno;
struct sFila
{
Tno *H,*T;
};
//Função para inserir valor na fila
inserir(struct sFila *L,int V)
{
Tno *P;
P=(Tno*)malloc(sizeof(Tno));
if(!P)
printf("Erro de memoria!\n");
else
{
P->valor=V;
P->prox= NULL;
if(!(L->H)&&!(L->T))
{
L->H=P;
L->T=P;
}
else
{
L->T->prox=P;
L->T=P;
}
}
}
//Função para remover um valor de uma fila
remover(struct sFila *L)
{
Tno *P;
P=L->H;
L->H=L->H->prox;
if(L->H==NULL)
L->T=NULL;
free(P);
}
//Zerar a matriz
void matriz_nula(int **matriz,int tamanho)
{
int i,j;
for(i=0; i<tamanho; i++)
for(j=0; j<tamanho; j++)
matriz[i][j]=0;
}
int main(void)
{
//Declaração de duas filas. Sendo G para mostrar o resultado final
struct sFila G,fila;
fila.H=NULL;
fila.T=NULL;
G.H=NULL;
G.T=NULL;
Tno *Pont;
int N,M,v,w,p,**matriz,**matriz2,ind,acm,i,j;
system("color f0");
for(;;)
{
scanf("%d %d",&N,&M);
matriz=(int **)calloc(N,sizeof(int*));
for(i=0; i<N; i++)
matriz[i] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz,N);
if(N==0&&M==0)
break;
//Estrutura que recebe os pontos de interseção, rua e tipo de rua
//Insere a conectividade das interseções na matriz
while(M--)
{
scanf("%d %d %d",&v,&w,&p);
if(p == 1)
matriz[v-1][w-1] = 1;
else
{
matriz[v-1][w-1] = 1;
matriz[w-1][v-1] = 1;
}
}
//Estrutura para verificar se conexão é satisfeita
for(i=0; i<N; i++)
{
matriz2=(int **)calloc(N,sizeof(int*));
for(j=0; j<N; j++)
matriz2[j] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz2,N);
//Estrutura para determinar qual linha será verificada as interseções
for(j=0; j<N; j++)
{
if(matriz[i][j]&&!matriz2[i][j]&i!=j)
{
inserir(&fila,j);
matriz2[i][j]=1;
}
}
//Estrutura inserir valor 1 na matriz caso as interseções estejam ligadas
while(!((fila.H==NULL)&&(fila.T==NULL)))
{
ind=fila.H->valor;
matriz[i][ind]=1;
for(j=0; j<N; j++)
{
if(matriz[ind][j]&&!matriz2[ind][j]&&ind!=j)
{
inserir(&fila,j);
matriz2[ind][j]=1;
}
}
remover(&fila);
}
}
acm=0;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
acm+=matriz[i][j];
if(acm == N*N)
inserir(&G,1);
else
inserir(&G,0);
for(i=0; i<N; i++)
{
free(matriz[i]);
free(matriz2[i]);
}
free(matriz);
free(matriz2);
}
Pont=G.H;
//Saída
while(G.H!=NULL)
{
printf("%d\n",G.H->valor);
remover(&G);
}
return 0;
}
#include <stdlib.h>
//Estruturas para a criação de filas
struct sNo
{
int valor;
struct sNo *prox;
};
typedef struct sNo Tno;
struct sFila
{
Tno *H,*T;
};
//Função para inserir valor na fila
inserir(struct sFila *L,int V)
{
Tno *P;
P=(Tno*)malloc(sizeof(Tno));
if(!P)
printf("Erro de memoria!\n");
else
{
P->valor=V;
P->prox= NULL;
if(!(L->H)&&!(L->T))
{
L->H=P;
L->T=P;
}
else
{
L->T->prox=P;
L->T=P;
}
}
}
//Função para remover um valor de uma fila
remover(struct sFila *L)
{
Tno *P;
P=L->H;
L->H=L->H->prox;
if(L->H==NULL)
L->T=NULL;
free(P);
}
//Zerar a matriz
void matriz_nula(int **matriz,int tamanho)
{
int i,j;
for(i=0; i<tamanho; i++)
for(j=0; j<tamanho; j++)
matriz[i][j]=0;
}
int main(void)
{
//Declaração de duas filas. Sendo G para mostrar o resultado final
struct sFila G,fila;
fila.H=NULL;
fila.T=NULL;
G.H=NULL;
G.T=NULL;
Tno *Pont;
int N,M,v,w,p,**matriz,**matriz2,ind,acm,i,j;
system("color f0");
for(;;)
{
scanf("%d %d",&N,&M);
matriz=(int **)calloc(N,sizeof(int*));
for(i=0; i<N; i++)
matriz[i] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz,N);
if(N==0&&M==0)
break;
//Estrutura que recebe os pontos de interseção, rua e tipo de rua
//Insere a conectividade das interseções na matriz
while(M--)
{
scanf("%d %d %d",&v,&w,&p);
if(p == 1)
matriz[v-1][w-1] = 1;
else
{
matriz[v-1][w-1] = 1;
matriz[w-1][v-1] = 1;
}
}
//Estrutura para verificar se conexão é satisfeita
for(i=0; i<N; i++)
{
matriz2=(int **)calloc(N,sizeof(int*));
for(j=0; j<N; j++)
matriz2[j] = (int*) calloc (N, sizeof(int));
matriz_nula(matriz2,N);
//Estrutura para determinar qual linha será verificada as interseções
for(j=0; j<N; j++)
{
if(matriz[i][j]&&!matriz2[i][j]&i!=j)
{
inserir(&fila,j);
matriz2[i][j]=1;
}
}
//Estrutura inserir valor 1 na matriz caso as interseções estejam ligadas
while(!((fila.H==NULL)&&(fila.T==NULL)))
{
ind=fila.H->valor;
matriz[i][ind]=1;
for(j=0; j<N; j++)
{
if(matriz[ind][j]&&!matriz2[ind][j]&&ind!=j)
{
inserir(&fila,j);
matriz2[ind][j]=1;
}
}
remover(&fila);
}
}
acm=0;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
acm+=matriz[i][j];
if(acm == N*N)
inserir(&G,1);
else
inserir(&G,0);
for(i=0; i<N; i++)
{
free(matriz[i]);
free(matriz2[i]);
}
free(matriz);
free(matriz2);
}
Pont=G.H;
//Saída
while(G.H!=NULL)
{
printf("%d\n",G.H->valor);
remover(&G);
}
return 0;
}
Implementações comentadas! Bússola!
#include<stdio.h>
#include <stdlib.h>
//Declaração da estrutura de hora e minuto
struct sbussola
{
unsigned int H,M;
};
//Função para conversão do horário de 24 horas para o analógico, de 12 horas.
hora12(int H)
{
if(H>=12)
H=H-12;
return H;
}
int main (void)
{
system("color f0");
// Declaração das variáveis
unsigned int N,i;
scanf("%u",&N);
// Declaração de um vetor de tamanho igual ao número de testes
struct sbussola bussola[N];
for(i=0; i<N; i++)
scanf("%u %u", &bussola[i].H,&bussola[i].M);
// Estrutura que por meio de fórmula calcula a saída
for(i=0; i<N; i++)
{
if((abs(bussola[i].M-(hora12(bussola[i].H)*5)))<30)
printf("%u\n",(abs(bussola[i].M-(hora12(bussola[i].H)*5)))*6);
else
printf("%u\n",(60-(abs(bussola[i].M-(hora12(bussola[i].H)*5))))*6);
}
return 0;
}
#include <stdlib.h>
//Declaração da estrutura de hora e minuto
struct sbussola
{
unsigned int H,M;
};
//Função para conversão do horário de 24 horas para o analógico, de 12 horas.
hora12(int H)
{
if(H>=12)
H=H-12;
return H;
}
int main (void)
{
system("color f0");
// Declaração das variáveis
unsigned int N,i;
scanf("%u",&N);
// Declaração de um vetor de tamanho igual ao número de testes
struct sbussola bussola[N];
for(i=0; i<N; i++)
scanf("%u %u", &bussola[i].H,&bussola[i].M);
// Estrutura que por meio de fórmula calcula a saída
for(i=0; i<N; i++)
{
if((abs(bussola[i].M-(hora12(bussola[i].H)*5)))<30)
printf("%u\n",(abs(bussola[i].M-(hora12(bussola[i].H)*5)))*6);
else
printf("%u\n",(60-(abs(bussola[i].M-(hora12(bussola[i].H)*5))))*6);
}
return 0;
}
Implementações comentadas!
#include<stdio.h>
#include <stdlib.h>
//Declaração da estrutura de hora e minuto
struct sbussola
{
unsigned int H,M;
};
//Função para conversão do horário de 24 horas para o analógico, de 12 horas.
hora12(int H)
{
if(H>=12)
H=H-12;
return H;
}
int main (void)
{
system("color f0");
// Declaração das variáveis
unsigned int N,i;
scanf("%u",&N);
// Declaração de um vetor de tamanho igual ao número de testes
struct sbussola bussola[N];
for(i=0; i<N; i++)
scanf("%u %u", &bussola[i].H,&bussola[i].M);
// Estrutura que por meio de fórmula calcula a saída
for(i=0; i<N; i++)
{
if((abs(bussola[i].M-(hora12(bussola[i].H)*5)))<30)
printf("%u\n",(abs(bussola[i].M-(hora12(bussola[i].H)*5)))*6);
else
printf("%u\n",(60-(abs(bussola[i].M-(hora12(bussola[i].H)*5))))*6);
}
return 0;
}
#include <stdlib.h>
//Declaração da estrutura de hora e minuto
struct sbussola
{
unsigned int H,M;
};
//Função para conversão do horário de 24 horas para o analógico, de 12 horas.
hora12(int H)
{
if(H>=12)
H=H-12;
return H;
}
int main (void)
{
system("color f0");
// Declaração das variáveis
unsigned int N,i;
scanf("%u",&N);
// Declaração de um vetor de tamanho igual ao número de testes
struct sbussola bussola[N];
for(i=0; i<N; i++)
scanf("%u %u", &bussola[i].H,&bussola[i].M);
// Estrutura que por meio de fórmula calcula a saída
for(i=0; i<N; i++)
{
if((abs(bussola[i].M-(hora12(bussola[i].H)*5)))<30)
printf("%u\n",(abs(bussola[i].M-(hora12(bussola[i].H)*5)))*6);
else
printf("%u\n",(60-(abs(bussola[i].M-(hora12(bussola[i].H)*5))))*6);
}
return 0;
}
Assinar:
Postagens (Atom)