Ir para conteúdo
Fórum Script Brasil

Lucas Bulhões

Membros
  • Total de itens

    13
  • Registro em

  • Última visita

Sobre Lucas Bulhões

Lucas Bulhões's Achievements

0

Reputação

  1. Cara você não sabe o quanto estou agradecido, sei o tempo que deve ter gasto para você entender o meu problema e organizar tudo isso para que eu pudesse entender. Emfim fiz algumas alterações no algoritmo final, juntamente com alguns testes e parece que está tudo certo, vou postar o resultado do algoritmo aqui para que outras pessoas que se deparem com a mesma questão futuramente possa ter uma resolução. #include<stdio.h> int main(){ int minerva; int ok; int i; int DIM; printf("Digite o tamanho da matriz que deseja criar: "); scanf("%d",&DIM); int matriz[DIM][DIM]; int linha, coluna; for(linha = 0 ; linha < DIM ; linha++){ for(coluna = 0 ; coluna < DIM ; coluna++) { printf("Elemento [%d][%d]: ", linha+1, coluna+1); scanf("%d", &matriz[linha][coluna]); } } for(linha = 0 ; linha < DIM ; linha++){ for(coluna = 0 ; coluna < DIM ; coluna++){ printf("%4d", matriz[linha][coluna]); printf("\n"); } } int n = DIM; int inicio = 0; //inicio int fim = n-1; //Marca o tamanho da matriz que vai de 0 até n-1 int contador = 1; //contador que usaremos para conferir se o numero vai de 1 até n*n int (*m)[n] = matriz; //m aponta para uma das matrizes acima(se quiser pode criar uma com dados personalizados por teclado e passar para m) //repete o laço até que contador alcance n*n, que seria 25 no caso de uma matriz de 5 por 5. cinco multiplicado por 5 é 25, esse seria o ultimo valor de uma matriz inca de 5 por 5 while( contador <= (n*n) ){ //Ponto A: checamos a linha horizontal superior (de esquerda a direita) i=inicio; while(i <= fim){ if( m[inicio][i]==contador ){ ok=1; contador++; } else{printf("A matriz não e inca."); return 1; } i++; } //ponto B: checamos a linha vertical direita ( de acima para baixo ) i=inicio+1; while(i <= fim){ if( m[i][fim]==contador ){ ok=1; contador++; } else{printf("A matriz não e inca."); return 2; } i++; } //Ponto C: checamos a linha horizontal inferior ( de direita para esquerda ) i=fim-1; while(i >= inicio){ if( m[fim][i]==contador ){ ok=1; contador++; } else{printf("A matriz não e inca."); return 3; } i--; } //Ponto D: checamos a linha vertical esquerda ( de abaixo para cima ) i=fim-1; while(i >= inicio+1){ if( m[i][inicio]==contador ){ ok=1; contador++; } else{printf("A matriz não e inca."); return 4; } i--; } inicio ++; fim--; } if(ok=1){ printf("A matriz e inca."); minerva=2; } if(minerva!=2){ printf("A matriz não e inca"); } return 0; } Muito obrigado.
  2. Eu não sabia como usar essa ferramenta, daqui para frente não cometerei esse deslize, obrigado pelo toque.
  3. Olá pessoal, mais uma das questões difíceis para iniciante, estou tendo dificuldades para encontrar os erros no algoritmo que desenvolvi, conto com a colaboração de todos, e serei grato a toda dica construtiva de vocês que são mais experientes. #include <stdio.h> #include <stdlib.h> int main(){ int logico,i,j,n,inicol,fimcol,inilin,fimlin,degrau; int matriz[20][20]; do{ printf("Escreva a dimensao da matriz:"); scanf("%d",&n); if((n<1)||(n>20)){ printf("A dimensao da matriz precisa estar entre 1 e 20\n"); } }while((n<1) || (n>20)); printf("A matriz informada e do tipo %dX%d\n",n,n); printf("Digite os numeros da matriz abaixo:\n"); for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ printf("Entre com o valor de matriz["); printf("%d,",i); printf("%d]:",j); scanf("%d",&matriz[i][j]); } } for(i=1;i<=n;i++){ printf("\n"); for(j=1;j<=n;j++){ printf("%2d",matriz[i][j]); printf(" "); } printf("\n"); } inicol=1; fimcol=n; inilin=1; fimlin=n; degrau=0; logico=1; while((logico=1)&&(inicol<fimcol) && (inilin<fimlin)){ for(i=inicol;i=fimcol;i++){ if(matriz[inilin][i]=(degrau+1)){ degrau=(degrau+1); } else{ logico=0; } } fimcol=(fimcol-1); for(i=fimcol;i=inicol;i--){ if(matriz[fimlin][i]=(degrau+1)){ degrau=(degrau+1); } else{ logico=0; } } fimlin=(fimlin-1); for(i=fimlin;i=inilin;i--){ if(matriz[i][inicol]=(degrau+1)){ degrau=(degrau+1); } else{ logico=0; } inicol=(inicol+1); } if(logico=1){ printf("A matriz e inca"); } else{ printf("A matriz não e inca"); } return 0; } Até essa parte abaixo o algoritmo está executando ok. #include <stdio.h> #include <stdlib.h> int main(){ int logico,i,j,n,inicol,fimcol,inilin,fimlin,degrau; int matriz[20][20]; do{ printf("Escreva a dimensao da matriz:"); scanf("%d",&n); if((n<1)||(n>20)){ printf("A dimensao da matriz precisa estar entre 1 e 20\n"); } }while((n<1) || (n>20)); printf("A matriz informada e do tipo %dX%d\n",n,n); printf("Digite os numeros da matriz abaixo:\n"); for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ printf("Entre com o valor de matriz["); printf("%d,",i); printf("%d]:",j); scanf("%d",&matriz[i][j]); } } for(i=1;i<=n;i++){ printf("\n"); for(j=1;j<=n;j++){ printf("%2d",matriz[i][j]); printf(" "); } printf("\n"); }
  4. Boa tarde pessoal, desenvolvi esse algoritmo para verificar se uma matriz é inca ou não, ou seja se partindo do extremo superior esquerdo e seguindo em espiral o número seguinte é o sucessor inteiro do número anterior, meu algoritmo está dando que a matriz é errada quando eu não começo com o primeiro termo da matriz [1,1] sendo 1, gostaria de pedir um minuto da atenção e experiência de todos vocês sou grato desde já. algoritmo "Matriz Inca" var i,j,n,inicol,fimcol,inilin,fimlin,degrau:inteiro matriz:vetor[1..20,1..20] de inteiro eh_inca:logico inicio repita escreva("Escolha a dimensão da Matriz:") leia (n) se((n < 1)ou(n > 20))então escreval("A dimensão da matriz precisa estar entre 1 e 20") fimse ate ((n > 0 ) e (n < 21)) escreval("Matriz: ",n ," x ",n) escreval("Digite os numeros da Matriz abaixo:") para i de 1 ate n faca para j de 1 ate n faca escreval("Entre com o valor de matriz[",i,",",j,"]:") leia (matriz[i,j]) fimpara fimpara para i de 1 ate n faca escreval para j de 1 ate n faca escreva (matriz[i,j]) fimpara escreval fimpara inicol <-1 fimcol <-n inilin <-1 fimlin <-n degrau <-0 eh_inca <- verdadeiro enquanto ((eh_inca) e (inicol<fimcol) e (inilin<fimlin)) faca para i de inicol ate fimcol faca se (matriz[inilin,i] = degrau + 1) então degrau <- degrau + 1 senao eh_inca <- falso fimse fimpara inilin <- inilin + 1 para i de inilin ate fimlin faca se (matriz[i,fimcol] = degrau + 1) então degrau <- degrau + 1 senao eh_inca <- falso fimse fimpara fimcol <- fimcol - 1 para i de fimcol ate inicol passo -1 faca se (matriz[fimlin,i] = degrau + 1) então degrau <- degrau + 1 senao eh_inca <- falso fimse fimpara fimlin <- fimlin - 1 para i de fimlin ate inilin passo -1 faca se (matriz[i,inicol] = degrau + 1) então degrau <- degrau + 1 senao eh_inca<-falso fimse fimpara inicol<-inicol + 1 fimenquanto se (eh_inca) então escreval ("Matriz é inca") senao escreval ("Matriz não é inca") fimse
  5. Então pessoal meu segundo tópico neste fórum. Estou fazendo um algoritmo para receber dois números inteiros e retornar na saída para o usuário o quociente da divisão e o resto, aha isso é muito fácil, porém não posso usar qualquer outra operação além de + e - kk, então fiz o código e tudo certinho só que nas linhas finais está dando erro e não estou sabendo arrumar, por favor conto com a experiência de todos vocês e sou grato desde já. #include <stdio.h> #include <stdlib.h> int main(){ int n1,n2,q,r,i,z,k,w; printf("Entre com 2 numeros inteiros.\n\n"); printf("N1-->"); scanf("%d",&n1); printf("N2-->"); scanf("%d",&n2); if(n1<n2){ q=0; } if(n1>n2){ i=0; z=0; while(i<n1){ while(z<n2){ z++; } i=i+z; q=q+1; } } if(i>n1){ q=q-1; } printf("%d \n",q); k=0; w=0; while(k<q){ w=w+n2; k++; } r==(n1-w); printf("%d",r); return 0;
  6. Muito Obrigado, essa questão já estava me prendendo a algum tempo.
  7. Boa noite pessoal, sou iniciante em C, e estou tendo um erro no meu programa que é uma espécie de calculadora, o erro está ocorrendo somente na divisão, eu serei eternamente grato se alguém puder dedicar um pouco do tempo para analisar esse problema, as 3 operações estão funcionando ok. Desde já agradeço a todos. #include <stdio.h> int main (void){ int n1,n2,k; float res; printf (" |-------------|Operaçoes Matematicas|---------------|\n\n"); printf ("Entre com o primeiro operando:"); scanf("%d",&n1); printf("Entre com o segundo operando:"); scanf("%d",&n2); printf("Escolha:\n\n"); printf("1-Soma\n2-Subtraçao\n3-Multiplicaçao\n4-Divisao\n\n"); printf("Digite aqui:"); scanf("%d",&k); if(k==1){ (res=(n1+n2)); printf("%f",res); } else if(k==2){ (res=(n1-n2)); printf("%f",res); } else if(k==3){ (res=(n1*n2)); printf("%f",res); } else if((k=4) && (n2!=0)){ (res=(n1/n2)); printf("%f",res); } else if((k==4) && (n2==0)){ printf("não e possivel dividir por zero."); } return 0;}
×
×
  • Criar Novo...