tabuleiro *resolver(tabuleiro *tab){
	char tmp[100][100];
	int lin,col;
	tabuleiro *f, *w, *z, *x;

		do{
			for(lin=0;lin!=tab->tamanho[0];lin++)
				for(col=0;col!=tab->tamanho[1];col++)
					tmp[lin][col]=tab->quadro[lin][col];
	   
        	f=aloca(tab);
        	w=verigual(tab,estra1(f));

        	f=aloca(w);
        	z=verigual(w,estra2(f));
	
        	f=aloca(z);
        	x=verigual(z,estra3(f));

        	f=aloca(x);
        	tab=verigual(x,estra4(f));


		}while(changes(tmp,tab) && verifica(tab)!=2);

		if(verifica(tab)==2);
		else tab=aleatorio(tab,0);


	return tab;
}
Пример #2
0
int main (void){

lista<string> l1;
l1.begin = NULL;
l1.end = NULL;

push_back(l1,new string ("R"));
push_back(l1,new string ("A"));
push_back(l1,new string ("D"));
push_back(l1,new string ("A"));
push_back(l1,new string ("R"));
imprime(l1);
verifica(l1);

lista<string> l2;
l2.begin = NULL;
l2.end = NULL;

push_back(l2,new string ("R"));
push_back(l2,new string ("A"));
push_back(l2,new string ("D"));
push_back(l2,new string ("A"));
push_back(l2,new string ("E"));
imprime(l2);
verifica(l2);



}
Пример #3
0
int main() 
{
	int matriz[9][9],j,i;
	for (i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		{
			scanf("%d ",&matriz[i][j]);
		}
	}
	verifica(matriz);
	/*for (i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		{
			if(matriz[i][j]==0)
			{
				verifica(i,j,matriz);
			}
		}
	}
*/
	system("pause");
	return 0;
}
Пример #4
0
int main () {
    
/* Declara as variaveis da funcao 'main' */
    int i, j, ocorrencias = 0;
    int n_linhas, m_colunas;
    char palavra[PMAX], caca[LMAX][CMAX], final_caca[LMAX][CMAX];
    
/* Obtem as informacoes e a propria matriz do caca palavras e a palavra a ser procurada */
    scanf ("%d %d %s", &n_linhas, &m_colunas, palavra);
    
/* Escreve "." em todas posicoes uteis da matriz de saida */
    for (i = 0; i < n_linhas; i++){
        scanf ("%s", caca[i]);
        for (j = 0; j < m_colunas; j++)
            final_caca[i][j] = '.';
    }

/* Verifica se cada caracter da matriz corresponde ao primeiro da palavra, se sim, invoca
 * a funcao que verifica a correspondencia completa da palavra */
    for (i = 0; i < n_linhas; i++)
        for (j = 0; j < m_colunas; j++)
            if ((caca[i][j] == palavra[0]) || (caca[i][j] == '_')  ||
                ((caca[i][j] == '#') && (testa_vogal(palavra[0]))) ||
                ((caca[i][j] == '%') && !(testa_vogal(palavra[0]))))
                ocorrencias += verifica (i, j, palavra, caca, final_caca);

/* Imprime a palavra procurada, a quantidade de ocorrencias e a matriz final com as ocorrencias */
    printf ("%s %d\n", palavra, ocorrencias);
    for (i = 0; i < n_linhas; i++, printf("\n"))
        for (j = 0; j < m_colunas; j++)
            printf ("%c", final_caca[i][j]);
        
    return 0;
}
Пример #5
0
//Palíndromo
int verifica( char str[], int len){
	if (len <= 1 ) return 1;
	else {
		if (str[0] != str[len-1] )return 0;
		return verifica(str + 1, len - 2 );
	}
}
Пример #6
0
void main(){
	for(int i = 1000; i <= 9999; i++){
		if(verifica(i)){
			printf("%d\n", i);
		}
	}
}
Пример #7
0
void retira(Fila *p) 
{
    if (p->fim > -1 && p->inicio < p->fim) 
    {
        p->fila[p->inicio] = 0;
        p->inicio++;
        return;
    }
    verifica(p);
    return;
}
Пример #8
0
void insere(Fila *p, int v) 
{
    if (p->fim >= TAMANHO - 1) 
    {
        verifica(p);
        return;
    }
    p->fim++;
    p->fila[p->fim] = v;
    return;
}
Пример #9
0
int main()
{
    int n1,n2,n3;
    scanf("%d%d%d",&n1,&n2,&n3);
    while(n1 != 0)
    {
        verifica(n1,n2,n3);
        scanf("%d%d%d",&n1,&n2,&n3);
    }
    return 0;
}
Пример #10
0
int main(void) {

	char pal[100];
	gets(pal);
	int tam = strlen(pal);

	printf("%d", verifica(pal, tam));



		return EXIT_SUCCESS;
}
Пример #11
0
int busca_binaria(int inf, int sup)
{
  int aux = verifica((inf+sup)/2);
  //printf("%d %d\n", inf, sup );

  if(inf >= sup)
    return sup;
  if(!aux)
    return busca_binaria((inf+sup)/2+1, sup);
  else if(aux)
    return busca_binaria(inf, (sup+inf)/2);
}
Пример #12
0
int main()
{
	char string1[tam], string2[tam];
	printf("string1: ");
	gets(string1);
	printf("string2: ");
	gets(string2);
	verifica(string1, string2);
	recebe();	
	system("pause");	
	return 0;
}
Пример #13
0
void imprime_fila(Fila *p) 
{
	if(p->fim > -1 && p->inicio == p->fim) 
	{
		verifica(p);
		return;
	}

    printf("Conteudo da fila\n");
    for (int i = p->inicio; i <= p->fim; i++) 
        printf("posicao %d valor %d \n", i, p->fila[i]);
    return;
}
Пример #14
0
int main()
{
    int T;
    scanf("%d ", &T);

    for (int caso = 1; caso <= T; caso++)
    {
        bool tem_ponto = false;

        printf("Case #%d: ", caso);

        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                scanf("%c", &tab[i][j]);
                if (tab[i][j] == '.')
                    tem_ponto = true;
            }
            getchar(); // \n
        }

        /* DEBUG
        putchar('\n');
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
                printf("%c ", tab[i][j]);
            putchar('\n');
        }
        */

        switch (verifica())
        {
            case 'X':
                printf("X won\n"); break;
            case 'O':
                printf("O won\n"); break;
            case 'Z':
                if (tem_ponto)
                    printf("Game has not completed\n");
                else
                    printf("Draw\n");
        }

        getchar(); // \n
    }

    return 0;
}
Пример #15
0
int main(int argc, char *argv[]){

    // Inicializa matriz e a posição central do cursor

    textbackground(CORFUNDO);
    inicializaMatriz(m);
    posLin = (int)TAM_MATRIZ/2;
    posCol = (int)TAM_MATRIZ/2;
    int tecla;

    // Inicia a lógica do jogo

    while(1){

        imprimeMatriz(m);
        destaca(posLin,posCol);
        imprimeStatus();
        if(pontuacao == 1)
            imprimeFimdejogo;

        if(fimDeJogo)
            imprimeFimdejogo();


        tecla = getch();

        if(tecla == DIRECIONAL){

            switch(getch()){
                case CIMA:     moveCursor(CIMA);       break;
                case DIREITA:  moveCursor(DIREITA);    break;
                case BAIXO:    moveCursor(BAIXO);      break;
                case ESQUERDA: moveCursor(ESQUERDA);   break;
            }
        }
        else {
            switch(tecla){
                case ENTER:     verifica(); break;
                case ESPACO:    sugestao(); break;
                case ESC:       return;
            }
        }
        gotoxy(TAM_MATRIZ*2+1,TAM_MATRIZ);

    }


    return 0;
}
main(){
	char palavra[TAM];
	FILE *fp;

	fp = fopen("texto.txt", "r");
	while(!feof(fp)){
		fscanf(fp,"%s", palavra);
		if(strcmpi(palavra, "") != 0)
			verifica(palavra);
		strcpy(palavra,"");//Pra nao correr o risco de inserir lixo de memoria..
	}					// ..a variavel palavra é "zerada"
	em_ordem(raiz);

	getch();
}
Пример #17
0
int influencias (int **matriz, int linha, int num_parlamentares,int size, int 
				 *temp) {
	int i, aux = 1, tem;
	
	for (i = 0; i < num_parlamentares; i++)
		if (matriz[linha - 1][i] == 1) {
			tem = verifica(temp, size + 1, i + 1);
			if (tem == 0) {
				temp[++size] = i + 1;
				aux++;
			}
		}
				  
	return aux;
}
Пример #18
0
int main()
{
    int numero;
    int resultado;

    printf("\nDigite um numero: ");
    scanf("%d", &numero);
    resultado = verifica(numero);
    if(resultado == 1){
        printf("\nO numero que você digitou é par!\n");
    } else {
        printf("\nO numero que você digitou é impar!\n");
    }
    return 0;
}
Пример #19
0
//L� AS COORDENADAS E VERIFICA SE � VALIDO
int leitura (void)
{
    scan = verifica();
    //PAR�METROS PARA SER V�LIDO
    if(scan!=3 || x<=0 || y<=0)
    {

        msg(1);
    }
    else
    {
        mover(x, y, sentido);
    }

    return 0;
}
Пример #20
0
// menu
void menu ()
{
	int opcao = 0;
	system("cls");
	printf("|------------------------MENU------------------------|\n");
	printf("|   1 - CADASTRO DE BARCOS                           |\n");
	printf("|   2 - CADASTRO DE REGATAS                          |\n");
	printf("|   3 - CADASTRO DE PARTICIPACAO DE REGATAS          |\n");
	printf("|   4 - RELACAO DE REGATAS REALIZADAS                |\n");
	printf("|   5 - RELACAO DE PARTICIPACAO EM REGATAS           |\n");
	printf("|----------------------------------------------------|\n");
	printf("|DIGITE A OPCAO DESEJADA.:                           |\n");
	printf("|----------------------------------------------------|\n");
	gotoxy(strlen("DIGITE A OPCAO DESEJADA.:")+3,8);
	scanf("%d",&opcao);
	
	verifica(opcao);	
}
void FiatShamir::on_ejecutar_clicked()  //proceso de autentificacion
{
    int acepta;
    QMessageBox msgBox;
    if(ui->xw->isEnabled() == 0) {    //si se han metido datos en la entrada de datos se ejecuta el proceso
        v=(s.toInt()*s.toInt())%n;  //v es la clave publica de A que guarda en entidad de confianza T
        ui->nw->setText(QString::number(n));  //llenamos las cajas de la ventana
        ui->vw->setText(QString::number(v));
        for(int i=0;i<iteracion.toInt();i++){  //calculamos las distintas iteraciones
            a=(arrayx[i]*arrayx[i])%n;
                if(arraye[i]==0){  //si e es igual a cero
                    y=arrayx[i]%n;  //y=x(mod n) //lo que A envia a B como respuesta a B

                }
                else if(arraye[i]==1){  //si e es igual a uno
                    y=(arrayx[i]*s.toInt())%n;  //y=xs(mod n)  //lo que A envia a B como respuesta a B
                }

                //EN B COMPROBAR SI ACEPTA O DENIEGA LA INDENTIFICACION
                acepta=verifica(arraye[i]);
                if(acepta==1){
                    resultado.append("ACEPTADA: ");
                }
                else{
                    resultado.append("DENEGADA: ");
                }
                resultado.append(QString::number(i+1)+"ª iteracion: "+" a= "+QString::number(a)+" Comprobar "+QString::number(y)+"^2= ");
                if(arraye[i] == 0) {
                    resultado.append(QString::number(int(a))+"(mod"+QString::number(n)+")\n");
                }
                else if(arraye[i] == 1) {
                    resultado.append(QString::number(int(a))+"*"+QString::number(int(v))+"(mod"+QString::number(n)+")\n");
                }

                ui->resultadosw->setText(resultado);
                ui->resultadosw->show();
            }
    }
    else {
        msgBox.information(this,"ERROR","Recuerde, debe completar la entrada de datos antes de ejecutar.");
        msgBox.exec();
    }
}
Пример #22
0
void autentication_server(int fd){
    int nread;
    char username[SHORT_STRING];
    char password[SHORT_STRING];

    nread = read(fd, username, SHORT_STRING-1);
    fflush(stdout);
    username[nread]='\0';

    nread = read(fd, password, SHORT_STRING-1);
    fflush(stdout);
    password[nread]='\0';

    if(verifica(username, password)==1){
        write(fd, "1", strlen("1") + 1);
        fflush(stdin);
        process_client(fd);
    }
    else{
        write(fd, "0", strlen("0") + 1);
        fflush(stdin);
    }
}
Пример #23
0
void combinacoes(int **matriz, int *custos, int num_parlamentares, int 
				 tam_partido, int temp[], int next, int size, int 
				 *preco_total) {
	int i;
	int tem, influenciados;
	
	if (size >= tam_partido) {
		*preco_total = 0;
		for (i = 0; i < tam_partido; i++)
			printf("%d ", temp[i]);
		printf("preco total = %d\n", *preco_total);
	}
	
	for (i = next; i <= num_parlamentares; i++) {
		/* Verifica se o parlamentar ja esta no partido */
		tem = verifica (temp, size, i);
		/* Caso o parlamentar ainda nao esteja no partido ...  */
		if (tem == 0) {
			/* ... insere ele no vetor */
			temp[size] = i;
			/* Veririca quantos e quais parlamentares ele influencia */
			influenciados = influencias(matriz, i, num_parlamentares, size, 
										temp);
			if (size + influenciados <= tam_partido)
			combinacoes(matriz, custos, num_parlamentares, tam_partido, 
						temp, i + 1, size + influenciados, preco_total);
		}
		
		/* Caso o parlamentar a ja estivesse no partido */
		else {
			combinacoes(matriz, custos, num_parlamentares, tam_partido, temp, 
						i + 1, size, preco_total);
		}
			
			
	}
}
Пример #24
0
int main()
{
	int sudoku[9][9],	//matriz que recebe os numeros do sudoku
		i, 				//contador
		j,				//contador
		teste = 0;		//flag
	/* chamada da funcao que le a matriz do jogo*/
	le(sudoku);

	/* chamada da funcao que procura os espacos em branco na matriz */
	verifica(sudoku);
	
	/* loop que verifica se o sudoku tem solucao */
	for(i = 0; i < 9; i++)
	{
		for(j = 0; j < 9; j++)
		{
			if(sudoku[i][j] == 0)
			{
				teste = 1;
			}
		}
	}

	//if(teste == 0)
	//{
		imprime(sudoku);
	//}
	//else
	//{
	//	printf("nao tem solucao\n");
	//}

	system("pause");
	return 0;
}
Пример #25
0
int main() {
		int num,fn,interv,aux,cont = 0;
		long int i,f;
		
		scanf("%ld %ld",&i,&f);
		interv = f - i;
		fn = i;
		
		while(interv >= 0) {
			aux = fn;
			/* printf("\n Fazedno %d\n ",fn); */
			while(aux != 1) {
					aux = verifica(aux);
					/*printf("%d\n", aux); */
					cont ++;
			}
			printf("%d \n",cont); 
			fn++;
			interv --;
			cont = 0;
		}
		
		return 0;
}
Пример #26
0
/* Funcao resolve verifica as possibilidades do numero passado da verifica,quando houver apenas uma possibilidade ele preenche 
a posicao com o numero adequado*/
void resolve(int t[9][9], int i , int j)
{
	int num[10],k ,l,m,cont=0;//vetor para verificacao dos numeros possiveis e contadores dos loops
	
	/*loop que zera o vetor antes de comecar a verificar*/

	for(k = 1; k <= 9; k++)
	{
		num[k] = 0;
	}

	/*percorre a linha e a coluna da posicao e se o numero for diferente de 0 ele preenche o vetor do numero com o mesmo*/
	for(l = 0; l < 9; l++)
	{
		/*preenche o vetor que nao eh zero*/
		if(t[i][l] != 0)
		{
			num[t[i][l]] = t[i][l];
		}
	
		if(t[l][j] != 0)
		{
			num[t[l][j]] = t[l][j];
		}
	}
	/*percorre a coluna 3 por 3 da posicao preenchendo o vetor com os numeros diferentes de 0*/
	for(l =(3*(i/3)); l <= (2+(3*(i/3))); l++)
	{
		for(m = (3*(j/3)); m <= (2+(3*(j/3))); m++)
		{
			if(t[l][m] != 0)
			{
				num[t[l][m]] = t[l][m];
			}
		}
	}
	/*loop que verifica quantas posicoes do vetor nao foi preenchida*/
	for(l = 1;l <= 9; l++)
	{
		/*significa que o vetor da posicao ele nao foi encontrado nas buscas e este eh uma possibilidade*/
		if (num[l] == 0)
		{
			cont++;
		}
	}
	/*se o cont for 1 , significa que para aquela posicao ha apenas uma possibilidade de numero e este sera preenchido*/
	if(cont == 1)
	{
		for(l = 1; l <= 9; l++)
		{
			if (num[l] == 0)
			{
				t[i][j]=l;
			}
		}
		/*se o contador for 1 , significa que a posicao da matriz principal foi preenchida entao ele volta a funcao verifica do comeco , 
		pois se este nao for preenchido ele passara para o proximo numero do loop do verifica e continuara para frente, quando preenche um , 
		este volta a verificar desde o comeco pois numeros ja verificados talvez possam agora ser preenchidos*/
	verifica(t);
	}

}
Пример #27
0
void ordenarCurso(char *nomefichI,char *nomefichF,char *cso, int n)
{
    alunos *aux;
    FILE *fich1,*fich2;
    int i=0,j=0,k,neg=0,soma=0;;
    char str[200];
    char nu1[4],nu2[4];
    infor texto;
    if(!verifica(nomefichF))
           strcat(nomefichF,".xml");
    fich1=fopen(nomefichI,"r");
    fich2=fopen(nomefichF,"w");
    if(fich1==NULL)
       {
          printf("O ficheiro não existe ou esta danificado");
          return;
          }
    while(!feof(fich1))
      {
            j=texto.maior=0;texto.menor=20;
            fgets(str,200,fich1);
            if(str[0]!='')
              {
                 while(str[i]!=';')
                  {
                   texto.curso[j]=str[i];
                   i++;
                   j++;
                  }
                  texto.curso[j]='\0';
                  j=0;i++;
                  while(str[i]!=';')
                   {
                      nu1[j]=str[i];
                      i++;
                      j++;
                   }
                  nu1[j]='\0';
                  texto.num=atoi(nu1);
                  j=0;i++;
                  while(str[i]!=';')
                    {
                       texto.datanasc[j]=str[i];
                       i++;
                       j++;
                    }
                  texto.datanasc[j]='\0';
                  j=0;i++;
                  while(str[i]!=';')
                     {
                         texto.nome[j]=str[i];
                         i++;
                         j++;
                     }
                  texto.nome[j]='\0';
                  j=0;i++;
            
                  while(str[i]!=';')
                  {
                     nu2[j]=str[i];
                     i++;
                     j++;
                  }
                  nu2[j]='\0';
                  texto.notas[0]=atoi(nu2);
                  for(k=1;k<=texto.notas[0];k++)
                   {
                      j=0;i++;
                      while(str[i]!=';')
                       {
                          nu2[j]=str[i];
                          i++;
                          j++;
                      }
                     nu2[j]='\0';
                     texto.notas[k]=atoi(nu2);
                     soma=soma+texto.notas[k];
                     if(texto.maior<texto.notas[k])
                            texto.maior=texto.notas[k];
                     if(texto.menor>texto.notas[k])
                            texto.menor=texto.notas[k];
                     if(texto.notas[k]<10)
                        neg++;
                  }
               texto.media=soma/texto.notas[0];
               if(neg>2)
                 strcpy(texto.estado,"reprovado");
               else
                 strcpy(texto.estado,"aprovado");
            
               if (n<3) 
                  colocarlista(texto);
               else
                 colocarlistaordenada(texto);
               i=soma=neg=0;  
          }}
        if(n==1)
             criafichcurso(nomefichF,cso);
        if(n==2)
             criafichaluno(nomefichF,atoi(cso));
        if(n==3)
             criafichtotal(nomefichF);
        
}
Пример #28
0
int main(){

	FILE *fp;
	Cidade *listaCidades = criaListaCidade();
	Gerador *listaGeradores = criaListaGerador();
	Interconexao *listaInterconexoes = criaListaInterconexao();
	Adaptador *listaAdaptadores = criaListaAdaptador();
	Relatorio relatorio;
	int i, tempoSimulacao = 2;
	char arquivo[100];

	char str[100]; //!< String auxiliar para obter registros

	printf("Rede de distribuicao\n");

	do{
	//! AE: o nome do arquivo nao eh valido

		printf("Digite o caminho para o arquivo (a partir de ./app/src):\n");
		scanf("%s",arquivo);
		getchar();

		fp = fopen(arquivo,"r");//!< Abre arquivo de entrada

	} while(fp == NULL);
	//! AE: o nome do arquivo eh valido

	printf("Digite o tempo desejado de simulacao\n");
	scanf("%d",&tempoSimulacao);

	do{
	//! AE: o arquivo nao chegou ao fim

		if(fgets(str,100,fp)!=NULL){
		//! AE: a linha (registro) obtido do arquivo possui conteudo

			switch (str[0]) {
				case 'C':
					//! AE: O registro obtido eh do tipo Cidade
					listaCidades = insereCidade(str,listaCidades);
					break;

				case 'G':
				//! AE: O registro obtido eh do tipo Gerador
					listaGeradores = insereGerador(str,listaGeradores);
					break;

				case 'I':
				//! AE: O registro obtido eh do tipo Interconexao
					listaInterconexoes = insereInterconexao(str,listaInterconexoes);
					break;

				case 'A':
				//! AE: O registro obtido eh do tipo Adaptador
					listaAdaptadores = insereAdaptador(str,listaAdaptadores);
					break;

				default:
					break;
			}
		}
		//! AS: a linha (registro) obtido do arquivo nao possui conteudo, ou seja, o arquivo chegou ao fim

	} while(!feof(fp));
	//! AS: o arquivo chegou ao fim

	fclose(fp);

	//! Comentarios de argumentacao
		/**
		*	Conectando e verificando as listas
		**/
	conecta(listaCidades,listaGeradores,listaInterconexoes,listaAdaptadores);
	verifica(listaCidades,listaGeradores,listaInterconexoes,listaAdaptadores);
	inicializa(listaGeradores,listaInterconexoes,listaAdaptadores,listaCidades);

	//! Comentarios de argumentacao
		/**
		*	Iniciando a interface
		**/
	mvprintw(0,0,"Pressione enter para comecar!");
	getch();
	mvprintw(0,0,"                             ");

	srand(1);

	for(i=0;i<tempoSimulacao;i++){
	// AE: tempo de simulacao nao chegou ao fim

		start_color();
	  init_pair(1, COLOR_GREEN, COLOR_BLACK);
		attron(COLOR_PAIR(1));
		mvprintw(1,100,"%d segundos", i);

		zerarCidades(listaCidades);
		zerarAdaptadores(listaAdaptadores);
		zerarInterconexoes(listaInterconexoes);

		gerenciaFalhas(listaInterconexoes);

		mandarRecursoProduzido(listaGeradores);
		defineDistribuicao(listaAdaptadores);
		mandarRecursoAdaptado(listaAdaptadores);
		gerenciaRecursoRecebido(listaCidades);

		atualizaCidades(listaCidades);
		atualizaInterconexoes(listaInterconexoes);
		atualizaGeradores(listaGeradores);
		atualizaAdaptadores(listaAdaptadores);

		getch();
	}
	// AS: tempo de simulacao chegou ao fim

	mvprintw(0,0,"                             ");
	mvprintw(1,0,"                             ");
	mvprintw(0,0,"Pressione enter para finalizar!");
	getch();
	endwin();
	//! Comentarios de argumentacao
		/**
		*	Finalizando a interface
		**/

	//! Comentarios de argumentacao
		/**
		*	Imprimindo as listas obtidas a partir do arquivo de entrada
		**/
	printf("\nLista de cidades:\n");imprimeListaCidade(listaCidades);
	printf("\nLista de geradores:\n");imprimeListaGerador(listaGeradores);
	printf("\nLista de interconexões:\n");imprimeListaInterconexao(listaInterconexoes);
	printf("\nLista de adaptadores:\n");imprimeListaAdaptador(listaAdaptadores);

	//! Comentarios de argumentacao
		/**
		*	Preenchimento do relatorio
		**/
	fp = fopen("../../RELATORIO.txt","w");//!< Abre arquivo de entrada
	fprintf(fp,"Relatório:\n\n");
	printf("Relatório:\n\n");

	relatorio.tempoTotalSimulacao = tempoSimulacao;
	fprintf(fp,"Tempo total da simulação: %d segundos\n", relatorio.tempoTotalSimulacao);
	printf("Tempo total da simulação: %d segundos\n", relatorio.tempoTotalSimulacao);

	relatorio.custoTotalSimulacao = custoGeradores(listaGeradores)*tempoSimulacao + custoGastoComConserto(listaInterconexoes);
	fprintf(fp,"Custo total na simulação: %d\n", relatorio.custoTotalSimulacao);
	printf("Custo total na simulação: %d\n", relatorio.custoTotalSimulacao);

	relatorio.totalGeradores = numeroGeradores(listaGeradores);
	fprintf(fp,"Total de geradores: %d\n", relatorio.totalGeradores);
	printf("Total de geradores: %d\n", relatorio.totalGeradores);

	relatorio.energiaTotalGerada = recursoProduzidoTotal(listaGeradores) * tempoSimulacao;
	fprintf(fp,"Energia total gerada: %d\n", relatorio.energiaTotalGerada);
	printf("Energia total gerada: %d\n", relatorio.energiaTotalGerada);

	relatorio.totalCidades = numeroCidades(listaCidades);
	fprintf(fp,"Total de cidades: %d\n", relatorio.totalCidades);
	printf("Total de cidades: %d\n", relatorio.totalCidades);

	relatorio.energiaGastaCidades = recursoGastoTotal(listaCidades);
	fprintf(fp,"Energia total gasta pelas cidades: %d\n", relatorio.energiaGastaCidades);
	printf("Energia total gasta pelas cidades: %d\n", relatorio.energiaGastaCidades);

	relatorio.tamanhoTotalInterconexoes = tamanhoTotalConexao(listaInterconexoes);
	fprintf(fp,"Tamanho total das interconexões: %.2f\n", relatorio.tamanhoTotalInterconexoes);
	printf("Tamanho total das interconexões: %.2f\n", relatorio.tamanhoTotalInterconexoes);

	relatorio.numeroFalhaInterconexoes = numeroTotalFalhas(listaInterconexoes);
	fprintf(fp,"Número de falhas nas interconexões: %d\n", relatorio.numeroFalhaInterconexoes);
	printf("Número de falhas nas interconexões: %d\n", relatorio.numeroFalhaInterconexoes);

	relatorio.numeroCidadesNegativadas = numeroCidadesNegativadas(listaCidades);
	fprintf(fp,"Número de cidades que ficaram com menos recurso que o necessário: %d\n",relatorio.numeroCidadesNegativadas);
	printf("Número de cidades que ficaram com menos recurso que o necessário: %d\n",relatorio.numeroCidadesNegativadas);

	relatorio.tempoSemRecurso =	tempoSemRecursoNecessario(listaCidades);
	fprintf(fp,"Tempo que ficaram sem recurso: %d\n",relatorio.tempoSemRecurso);
	printf("Tempo que ficaram sem recurso: %d\n",relatorio.tempoSemRecurso);

	relatorio.numeroCidadesNoVermelho = numeroCidadesNoVermelho(listaCidades);
	fprintf(fp,"Número de cidades que ficaram com menos de 30%% dos recursos: %d\n",relatorio.numeroCidadesNoVermelho);
	printf("Número de cidades que ficaram com menos de 30%% dos recursos: %d\n",relatorio.numeroCidadesNoVermelho);

	relatorio.tempoCidadesNoVermelho = tempoCidadesNoVermelho(listaCidades);
	fprintf(fp,"Tempo que ficaram com menos de 30%% dos recurso: %d\n", relatorio.tempoCidadesNoVermelho);
	printf("Tempo que ficaram com menos de 30%% dos recurso: %d\n", relatorio.tempoCidadesNoVermelho);

	fclose(fp);

	printf("\n\nRelatório gerado!\n\n");

	//! Comentarios de argumentacao
		/**
		*	Desalocando as listas obtidas
		**/
	liberaListaCidade(listaCidades);
	liberaListaGerador(listaGeradores);
	liberaListaInterconexao(listaInterconexoes);
	liberaListaAdaptador(listaAdaptadores);

	getchar();
	return 0;
}
Пример #29
0
int main(void)
{   
    int u;
    for(u=0;;u++)
    {
        int n, i, j, cont=0, k, x, maior=0;
        scanf("%d", &n);
        if(n==0)break;
        int nentra[n+1], relatorio[n+1][n+2], estao[n+1], maiores[n+1], maiores2[n+1];
        memset(nentra, 0, sizeof(nentra)); 
        memset(estao, 0, sizeof(estao));
        memset(maiores, 0, sizeof(maiores)); 
        memset(maiores2, 0, sizeof(maiores2));
        
            for(i=1;i<=n;i++)
            {
                for(j=1;;j++)
                {
                    scanf("%d", &relatorio[i][j]);
                    if(relatorio[i][j]==0)break;
                }
            }
            
            for(k=1;k<=n;k++)
            {
                for(x=k,i=1;i<=n;i++,x--)
                {
                    if(x==0)x=n;
                    if(nentra[x]!=1 && verifica(relatorio[x], estao)!=1)
                    {
                        estao[x]=1;
                        cont++;
                               for(j=1;;j++)
                               {
                                    if(relatorio[x][j]==0)break;
                                    else nentra[(relatorio[x][j])]=1;
                               }
                    }
                }
                if(cont>maior)maior=cont;
                cont=0;
                memset(nentra, 0, sizeof(nentra)); 
                memset(estao, 0, sizeof(estao));
                for(x=k,i=1;i<=n;i++,x++)
                {
                    if(x==(n+1))x=1;
                    if(nentra[x]!=1 && verifica(relatorio[x], estao)!=1)
                    {
                        estao[x]=1;
                        cont++;
                               for(j=1;;j++)
                               {
                                    if(relatorio[x][j]==0)break;
                                    else nentra[(relatorio[x][j])]=1;
                               }
                    }
                }
                if(cont>maior)maior=cont;
                cont=0;
                memset(nentra, 0, sizeof(nentra)); 
                memset(estao, 0, sizeof(estao));
            }
            
            printf("Teste %d\n", u+1);
            printf("%d\n", maior);
            printf("\n");
    }
    return 0;  
}
Пример #30
0
tabuleiro *aleatorio(tabuleiro *tab,int before){
	int lin,col,i,l,com=0,barexist,barconess, posicoes;
	int linhas[100],comb[100];
	char tmp[100][100],local[100][100];
	tabuleiro *f, *w, *z, *x;

	


	for(lin=0;lin!=tab->tamanho[0];lin++){
		barexist=0;
		posicoes=0;
		for(col=0;col!=tab->tamanho[1];col++){
			if(caniboat(tab,lin,col)) posicoes++;
			else if(tab->quadro[lin][col]!='~' && tab->quadro[lin][col]!='.') barexist++;
		}
		barconess=tab->linhas[lin]-barexist;
		comb[lin]=combinacoes(posicoes,barconess);
	}


	for(i=0;i!=tab->tamanho[0];i++)
		linhas[i]=i;



	ordena(comb,linhas,0,tab->tamanho[0]);



	for(i=0;comb[i]==0;i++);

	l=linhas[i];
	com=0;








	for(lin=0;lin!=tab->tamanho[0];lin++)
	   	for(col=0;col!=tab->tamanho[1];col++)
	   		tmp[lin][col]=tab->quadro[lin][col];


		do{
			if(verifica(tab)==2) ;
			else if(verifica(tab)==0){

				for(lin=0;lin!=tab->tamanho[0];lin++)
	   				for(col=0;col!=tab->tamanho[1];col++)
	   					tab->quadro[lin][col]=tmp[lin][col];

	   				++com;

					if(com>=comb[i]) {com=0; l=linhas[++i];}

	   				tab=aleoaux(tab,l,com);
	   			}

	  	    else if(verifica(tab)==1){

	  	    	++com;

				if(com>=comb[i]) {com=0; l=linhas[++i];}



	  	    	tab=aleoaux(tab,l,com);
	  	    } 			

			do{
				for(lin=0;lin!=tab->tamanho[0];lin++)
	   				for(col=0;col!=tab->tamanho[1];col++)
	   					local[lin][col]=tab->quadro[lin][col];
	   	

        	f=aloca(tab);
        	w=verigual(tab,estra1(f));


        	f=aloca(w);
        	z=verigual(w,estra2(f));


        	f=aloca(z);
        	x=verigual(z,estra3(f));

        	f=aloca(x);
        	tab=verigual(x,estra4(f));



		}while(changes(local,tab) && verifica(tab)!=2);


		if(verifica(tab)==0){
			for(lin=0;lin!=tab->tamanho[0];lin++)
	   				for(col=0;col!=tab->tamanho[1];col++)
	   					tmp[lin][col]=tab->quadro[lin][col];

		}




		if(before==1){
			for(lin=0;lin!=tab->tamanho[0];lin++)
	   				for(col=0;col!=tab->tamanho[1];col++)
	   					tmp[lin][col]=tab->quadro[lin][col];

	   	return tab;

		}
		else if(verifica(tab)!=2 && i+1==tab->tamanho[0]) tab=aleatorio(tab,1);

		if(dots(tab) || verifica(tab)!=2) {
			for(lin=0;lin!=tab->tamanho[0];lin++)
	   				for(col=0;col!=tab->tamanho[1];col++)
	   					tmp[lin][col]=tab->quadro[lin][col];

	   	return tab;

		}

	}while(verifica(tab)!=2);


   return tab;
}