-
Total de itens
13 -
Registro em
-
Última visita
Sobre Lucas Bulhões

Lucas Bulhões's Achievements
0
Reputação
-
Muito Obrigado, já consegui resolver meu problema.
-
Calculus Tom Apostol
-
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.
-
Brigadão mano,
-
Sim
-
Realmente, agora acho que agora está ok.
-
Eu não sabia como usar essa ferramenta, daqui para frente não cometerei esse deslize, obrigado pelo toque.
-
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"); }
-
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
-
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;
-
Muito Obrigado, essa questão já estava me prendendo a algum tempo.
- 2 respostas
-
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;}
- 2 respostas