Ir para conteúdo

Nefisto

Members
  • Total de itens

    26
  • Registro em

  • Última visita

Reputação

0 Comum

1 Seguidor

Sobre Nefisto

  • Data de Nascimento 07/22/1991

Informações Pessoais

  • Sexo
    Masculino

Últimos Visitantes

653 visualizações
  1. Nefisto

    Separar número inteiro e somar os dígitos

    #include <stdio.h> int main() { int n, total = 0; scanf("%d", &n); if (n < 0) n *= -1; while (n) { total += n%10; n /= 10; } printf("%d\n", total); return (0); }
  2. Nefisto

    Matrizes

    Ola @rafael_iftm, segue o código com algumas correções, só falta terminar a parte de achar o menor. Qualquer duvida manda msg aew. #include <stdio.h> int main() { int matriz[5][5]; //declaracao das variaveis. int l=0,c=0,aux[5][5]; for(l=0;l<5;l++) //inicializar a matriz com zero { for(c=0;c<5;c++) { // matriz[5][5]=0; <<<< 1- uma matriz de 5x5 vai de 0 a 4, o indice [5][5] esta fora da matriz // aux[5][5]=0; <<<< 2- tanto na matriz quando no aux, você so inicia o indicie[5][5] com zero 25 vezes ... matriz[l][c] = 0; aux[l][c] = 0; } } for(l=0;l<5;l++) //receber e validar os valores { for(c=0;c<5;c++) { printf("Informe o valor do elemento ==> linha: %i , coluna: %i\n",l+1,c+1); scanf("%i", &matriz[l][c]); // aux[l][c]=matriz[l][c]; <<<< nao preciso do aux // if(matriz[l][c]==aux[l][c]) <<<< Isso nao faz sentido, em cima você diz q aux é igual a matriz, e aki verifica se eles sao iguais? vai entrar toda vez nesse if // { // printf("Numero repetido,digite outro:\n"); // scanf("%i",&matriz[l][c]); // } //VERIFICA SE O NUMERO JA EXISTE register int i; for(i = 0; i < (l*5) + c; i++) if( *(*matriz + i) == matriz[l][c] )// <<<<< Tratando a matriz como um vetor e caminhando pela sua posicao na memoria { printf("Numero repetido, tente novamente.\n"); c--; } } } for(l=0;l<5;l++) //exibir a matriz { for(c=0;c<5;c++) { printf("\t%i",matriz[l][c]); } printf("\n"); } return 0; }
  3. Nefisto

    [Resolvido]Somar todas diagonais de uma matriz

    #include <stdio.h> #define MIN( a, b ) a < b ? a : b #define ZERO( O, tmp ) O > 0 ? 0 : tmp int main() { int m = 3, n = 3; int mat[m][n]; int t = (m+n-1); int o = (m-n+1); int vecR[t]; int tmp = 1, count = 0; register int i, j, a; //Inicializa matriz for(i = 0, j = 9; i < m; i++) for(a = 0; a < n; a++) mat[i][a] = j--; //Inicializa vetor for(i = 0; i < t; i++) vecR[i] = 0; //LOGICA for(i = 0; i < t; i++) { count = 0; a = MIN( i, (m-1) );//Limita o contador de linhas j = ZERO( o, tmp );//Organiza a coluna inicial if( j == tmp ) tmp++;//incrementa a coluna inicial /*Os prints de baixo servem para visualizar melhor as contas, descomente se achar nescessario*/ //printf("a -> %d\tj-> %d\n", a, j); while( a >= 0 && j <= (n-1) ) { //printf("%d ", mat[a][j]); vecR[i] += mat[a--][j++]; count++; // if(a >= 0 && j <= (n-1)) // printf(" + "); } //printf("= %d\n", vecR[i]); if( count == n ) o--; } for(i = 0; i < m; i++) { printf("\t"); for(a = 0; a < n; a++) printf("%d ", mat[i][a]); printf("\n"); } printf("Vetor resultante:\n"); for(i = 0; i < t; i++) printf("%d ", vecR[i]); printf("\n"); return (0); }
  4. Nefisto

    Como verifico se os números dentro do vetor é primo ?

    #include <stdio.h> #include <math.h> int Primo(int n) { register int i; int maxP = (int)ceil(sqrt((double)n)); if( !(n%2) ) return 0; for(i = 3; i <= maxP; i += 2) if( !(n % i) ) return 0; return 1; }
  5. Nefisto

    Matriz em c

    Ola maria luiza, o unico erro do seu esta nessa linha: printf("%d", &m[j]); A funcao printf ao contrario do scanf recebe um valor e nao um endereço de memoria, e m[j] é um valor ja &m[j] é um endereço. Akeles valores "estranhos" q sao mostrados, nao passam de uma representação em decimal dos endereços de memoria de cada variavel da matriz. Só duas dicas antes de terminar, primeiro evite trabalhar com numeros constantes, oq nós chamamos de "numeros magicos", usar as macros de define para colocar os tamanhos é um otima pratica ;P e procure a opção "CODIGO" do forum, ela identa e facilita a leitura do seu codigo. Espero ter ajudado, GLHF =D #include <stdio.h> #include <stdlib.h> #define TAM 10 int main() { int m[TAM][TAM]; int i,j; for(i=0;i<TAM;i++) { for(j=0;j<TAM;j++) { printf("Digite o valor: "); scanf("%d", &m[i][j]); } } for(i=0;i<TAM;i++) { for(j=0;j<TAM;j++) { printf("%d\n", m[i][j]); } printf("\n"); } system("pause"); }
  6. Nefisto

    Bug em programa alocação dinâmica de vetores

    Amigo, esta muito errado. 1- vet é um endereço de memoria, comparar ele com o decimal zero, seria como comparar ele com NULL e nao é o que você quer, substitua. - vet != 0 por *vet != 0 Desrefencie antes de comparar. 2-Voce esta alocando 1*sizeof(int), ou seja, 4 bytes para armazer um inteiro, e você coloca isso dentro de um laço onde a condição de parada é dada pelo usuario, você precisa realocar o espaço dentro do loop, oq eu te recomendo é o seguinte, por malloc ser uma operação mto custoza, aloca inicialmente um espaço maior como - 100*sizeof(int)-, e se o seu n passar de 99 você da um realloc em mais 100 espaços. 3- Por vet ser um ponteiro, e scanf esperar um ponteiro para guardar o valor inserido pelo usuario, a intrução "...&vet" nao faz sentido, ja q o & serve para pegar o endereço de algo na memoria, voce esta pegando o endereço de um endereço, vai gerar erros sutis, se você quer usar o & entao faça "...&vet[n]" ou para nao usar o & você usa o vet solto, "...vet);" mas nesse ultima caso você precisa incrementar o ponteiro com vet++, e nao se eskeca de salvar a posição inicial do ponteiro se for seguir por este ultimo caminho. 4- você usa um while(*vet != 0), sem inicializar vet, entao se por um acaso o lixo de memoria q esta la quando você alocou o espaço for igual a 0, o laço nunca vai acontecer, use ou um do/while, ou inicialize valores para o endereço para evitar este erro. 5-Nao tem pq j começar em 1, e se você optar por usar um do/while é necessario q seja usado j<n-1, ja q ele vai passar pelo while uma vez a mais no 0 6- O seu free esta abaixo do return, é um erro comum, o return do main encerra o programa, logo sua memoria nunca sera liberada, coloque-a uma linha acima Acho q é isso, segue o codigo corrigido, #include <stdio.h> #include <stdlib.h> #include <string.h> int main () { int *vet; int size = 1; int j, n = 0; vet = (int*)malloc(size * 100 * sizeof(int)); do { printf("Digite um numero:\n"); scanf("%d", &vet[n]); n++; if(n / 100 == size) { size++; realloc(vet, size * 100 * sizeof(int)); } }while(vet[n-1]); for (j = 0; j < n-1; j++) { printf("%d ", vet[j]); } printf("\n"); free(vet); return 0; }
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.