Ir ao conteúdo

UmPrograma

Membro Pleno
  • Posts

    176
  • Cadastrado em

  • Última visita

Tudo que UmPrograma postou

  1. @AnsiC Valeu amigo. Ai no caso so colocar esse "if" dentro de outro, já que quero o menor numero acima da diagonal secundaria.
  2. Fiz esse poste pois estava a resolver o seguinte exercicio. /**42. Faça uma função que receba, por parâmetro, uma matriz A(8,8) e retorne o menor valor dos elementos acima da diagonal secundária.*/ #include <stdio.h> #include <locale.h> #include <time.h> main (){ int mat[4][4], i,j; setlocale(LC_ALL,"Portuguese"); srand(time(NULL)); printf("Os valores da matriz serão preenchidos automaticamente."); for(i=0;i<4;i++){ for(j=0;j<4;j++){ mat[i][j]=rand()%50; } } printf("\n\n"); int menor(int *mat[][4]); menor(&mat); for(i=0;i<4;i++){ for(j=0;j<4;j++){ printf("Matriz [%d][%d]: %d.\n",i,j,mat[i][j]); } } printf("O menor numero acima da coluna secundaria e o %d.\n", menor(mat)); } int menor(int *mat[][4]){ int i, j, pequeno; pequeno=mat[0][0]; for(i=0;i<4;i++){ for(j=0;j<4;j++){ if(j<=4-i-2){ if(pequeno > mat[i][j]){ pequeno=mat[i][j]; } } } } return pequeno; } Ele esta funcionando, mas acredito que haja algo de errado nele. adicionado 2 minutos depois Pesquisei na internet antes de resolver esse exercicio, nao achei nenhuma dessas forma de fazer. Alias, apenas a primeira que tinha exemplo na internet.
  3. Uai, como faco para passar ela inteira? Tem que usar o '*' ? adicionado 14 minutos depois Pois dessa forma que está, qualquer mudanca que eu fizer dentro da funcão ficará restrista na função. E ponteiro nao funciona dessa forma.
  4. Boa noite, como passam? Estava a resolver um exercicio de ponteiro, mas precisamente de matriz. Nele pedia que passasse para uma funcao a matriz como parametro. Pois bem, quando resolvo exercicios de vetor é simples (nem tanto ahaha). Fica da seguinte forma. int main(){ int funcao(int *vet); funcao(vet); } int funcao (int *vet){ ....} Mas matriz fica da seguinte forma. ( nao sei se esta certo, mas esta rodando) int main(){ int mat[4][4]; /// declaracao normal int funcao(int mat[][4]); ///chamando a funcao, so que sem o uso de '*' como no vetor, porque? funcao(mat); } int funcao(int mat[][4]{ ....} Acredito que nao esteja sendo passado o parametro da matriz. Estou certo? Podem me ajudar.
  5. É uma pergunte meio estranha, mas onde é que esta sendo feito o calculo de fatoral? Seria nessa parte?? -> É uma função diferente! (Nunca usei long ou short para declarar algum tipo, pensava que o usava da seguinte forma -> short int, long int)
  6. Aí no caso eu poderia passar o vetor A preenchido e o vetor B sem nada. E dentro da funcao copiar do vetor A para o vetor B. E depois retornar apenas o B com os fatoriais. (no caso nao retorna nada, já que é por parametro , (parece referencia)); Seria dessa forma, né?
  7. Pessoal conseguir resolver. So faltava passar para a funcao os valores. Dessa forma : --> mudar (vet2);
  8. Bom dia. Como vão? Estava a resolver um exercício que pedia que criasse dois vetor, e um deles deve conter o fatorial do outro. Ja resolvi problemas de fatorial. Ja ordenei um vetor (dentro de uma funcao por meio de ponteiro). Ai achei que juntando algumas coisas que fiz nesses exercicios conseguiria resolver esse outro. Acho que deva ser algum detalhe que esta passando despercebido. Se puderem da uma olhada no codigo, agradecido. /**6. Faça um procedimento que recebe 2 vetores A e B de tamanho 10 de inteiros, por parâmetro. Ao final do procedimento B deve conter o fatorial de cada elemento de A. O vetor B deve retornar alterado. */ #include <stdio.h> main(){ int i, vet[5], vet2[5]; printf("Entre com os valores do vetor.\n"); for(i=0;i<5;i++){ printf("Vetor [%d]: ", i); scanf("%d", &vet[i]); } printf("\n\nInformamos que o valor do vetor 1 foi copiado para o vetor 2.\n"); for(i=0;i<5;i++){ vet2[i]=vet[i]; } int mudar(int *vet2); printf("\nO vetor de fatorial e o seguinte.\n"); for(i=0;i<5;i++){ printf("Vetor [%d] : %d.\n", i, vet2[i]); } return 0; } int mudar(int *vet2){ int i, j=1, num; for(i=0;i<5;i++){ num=vet2[i]; j=1; for(num=num;num>=1;num=num-1){ j=j*num; } vet2[i]=j; } }
  9. Interessante como voce alterou o valor de 'd'. ( 'p' aponta para 'd', ai mudando um, muda o outro) Muito bom mesmo. Gradecido pela ajuda....
  10. Obrigado @isrnick . E a todos ai. Acho que entendi agora (um pouco). No exemplo que enviei de troca de inteiros, usa o ' * ' para fazer com que as mudancas seja feitas diretamente no corpo principal tambem. Ai achei que deveria fazer o mesmo com o char, mas parece que funciona sem. Normalmente quando mudamos algo na funcao, o corpo principal mantem ainda com os mesmo valores. Acho que to pegando a ideia.... adicionado 1 minuto depois @Simon Viegas Pois é, para mim era por referencia tambem. (tava vendo um video no youtube, para aprender ahaha)
  11. Minha maior duvida nesse exercicio era em relação a semelhanca a outro que ja tinha feito. Pois a funcao apenas cria uma copia que receberá os mesmos valores da funcao principal. Para eu mudar os valores das variaveis da funcao principal na funcao troca, eu teria que ter o endereco de memoria para saber onde ela foi guardada. Ai dessa forma pode fazer as mudancas na funcao troca e mudar , consequentemente, os valores das variaveis da funcao principal. Mas voce @AnsiC fez sem usar ponteiros em 1 dos 2 modos que voce fez. (dos 1000 possiveis) So nao entendo porque funcionou dessa forma, mas com inteiros não.
  12. Não sei se conseguir se claro. Ma era isso que eu estava tentando. So que com nomes. #include <stdio.h> main (){ int x, y; printf("Informe o valor 1.:\n"); scanf("%d", &x); printf("Informe o valor 2.:\n"); scanf("%d", &y); void troca(int *a, int *b); troca(&x,&y); printf("\n\n"); printf("o valor de x e %d.\n", x); printf("O valor de y e %d.\n", y); } void troca(int *a, int *b){ int aux; aux = *b; *b = *a; *a = aux; printf("o valor de x e %d.\n", *a); printf("O valor de y e %d.\n", *b); } Com nome e com vetores tambem.
  13. @isrnick então para eu conseguir mudar o vetor de char eu teria que pegar a primeira posicao ? E ir pegando as proximas posições. void mudar(char *nome1, char *nome2){ char aux[100]; int i=0; /*strcpy(aux, *nome1); strcpy(*nome1, *nome2); strcpy(*nome2, aux);*/ while(nome1[100]!='\0'){ aux[i]=*nome1[i]; i++; } aux[i]='\0'; i=0; while(nome2!='\0'){ *nome1[i]=*nome2[i]; i++; } nome1[i]='\0'; i=0; while(aux!='\0'){ *nome2[i]=aux[i]; i++; } nome2[i]='\0'; for(i=0;i<100;i++) printf("O nome 1 é o %s.\n", *nome1[i]); for(i=0;i<100;i++) printf("O nome 2 é o %s.\n", *nome2[i]); } @AnsiC To entendendo nada do que você esta tentando passar. Nada que você fala esta funcionando aqui. (possivelmente estou errando em algo) mas mesmo assim, você esta falndo que esta errado, eu mudo e nao da certo.
  14. Aqui esta a funcao void troca_nome(char *nome1, char *nome2){ setlocale(LC_ALL,"Portuguese"); char aux[100]; int i, tam; tam=100; /*for(i=0;i<tam;i++){ aux[i]=*nome1[i]; } for(i=0;i<tam;i++){ *nome1[i]=*nome2[i]; } for(i=0;i<tam;i++){ *nome2[i]=aux[i]; }*/ strcpy(aux, nome1); strcpy(nome1, nome2); strcpy(nome2, aux); printf("O primeiro nome e o %s.\n", *nome1); printf("O segundo nome e o %s.\n", *nome2); } adicionado 13 minutos depois Acabei de refazer aqui, mas invés de mudar por referencia, mudei por valor. Deu certo!!!! Entretanto, eu queria passar o ponteiro do vetor de caracteres para quando eu mudar ele na funcao, tambem ser mudado no corpo principal. Alguma ideia?
  15. @AnsiCAte que entendi. Eu mudei aqui os codigos na hora de chamar a funcao e na propria funcao, mas nao deu certo não. Fiz da mesma forma aí. Eu estava tentando trocar (sugestivo) as palalvras. Dessa forma a primeira ia para a segunda e vice versa. Como se tratar de um vetor de caracter, acho que deve ter que pegar posicao por posicao do vetor e guardar num vetor temporario. Mas nao sei o que..... Vou continuar tentando aqui. Se conseguir mando o codigo.
  16. Boa tarde. Como vão? Estou aprendendo ponteiros mas me deparei com umm dificuldade (estranha, já que fiz processo similliar com inteiros) em troca nomes por referencia. #include <stdio.h> #include <string.h> #include <locale.h> main(){ setlocale(LC_ALL,"Portuguese"); char nome1[100], nome2[100]; printf("Digite o primeiro nome: "); scanf("%s", nome1); printf("Digite o segundo nome: "); scanf("%s", nome2); void troca_nome(char *nome1[100], char *nome2[100]); troca_nome(&nome1, &nome2); printf("O nome 1 é o %s.\n", nome1); printf("O nome 2 é o %s.\n", nome2); } void troca_nome(char *nome1[100], char *nome2[100]){ setlocale(LC_ALL,"Portuguese"); char aux[100]; int i, tam; tam=100; for(i=0;i<tam;i++){ aux[i]=*nome1[i]; } for(i=0;i<tam;i++){ *nome1[i]=*nome2[i]; } for(i=0;i<tam;i++){ *nome2[i]=aux[i]; } /*strcpy(aux, nome1); strcpy(nome1, nome2); strcpy(nome2, aux);*/ printf("O primeiro nome e o %s.\n", *nome1); printf("O segundo nome e o %s.\n", *nome2); } Alguem tem ideia do que possa ser? Desde de já, agradecido.
  17. Ops, foi mal. Peguei o codigo errado kkk segue ele #include <stdio.h> #include <math.h> #include <stdlib.h> float calculo(float a, float b, float c){ float delta;// res, x,x2; delta=b*b-4*a*c; return delta; } main (){ float a,b,c, x,x2,y; do{ printf("Informe o valor de 'A': "); scanf("%f", &a); }while(a==0); printf("Informe o valor de 'B': "); scanf("%f", &b); printf("Informe o valor de 'C': "); scanf("%f", &c); printf("\n\nO resultado.\n"); //float calculo(); //calculo(a,b,c); printf("DElta %f.\n", calculo(a,b,c)); } E sobre o #2, corrigir o que? o printf?
  18. @Simon Viegas Acho que eu ja postei o codigo final ai em cima. Nesse codigo agora se voce roda-lo nao vai da certo. #include <stdio.h> #include <math.h> #include <stdlib.h> main (){ float a,b,c, x,x2,y; do{ printf("Informe o valor de 'A': "); scanf("%f", &a); }while(a==0); printf("Informe o valor de 'B': "); scanf("%f", &b); printf("Informe o valor de 'C': "); scanf("%f", &c); printf("\n\nO resultado.\n"); float calculo(); //calculo(a,b,c); printf("DElta %f.\n", calculo(a,b,c)); } float calculo(float a, float b, float c){ float delta;// res, x,x2; delta=b*b-4*a*c; return delta; } E com a equacao #include <stdio.h> #include <math.h> #include <stdlib.h> void calculo(float a, float b, float c){ float delta, res, x,x2; delta=b*b-4*a*c; if (delta==0){ x = ((b*-1) - sqrt(delta))/2*a; printf("Delta e 0 (ZERO).\n"); printf("O valor de x e x2 e %f.\n", x); } else if(delta>0){ x= ((b*-1) + sqrt(delta))/2*a; x2= ((b*-1) - sqrt(delta))/2*a; printf("Delta e %f.\n", delta); printf("O valor de x e %f.\n", x); printf("O valor de x2 e %f.\n", x2); } else{ printf("Delta e igual a %f.\n"); printf("Nao exsite raiz real.\n"); } //return res; } main (){ float a,b,c, x,x2,y; do{ printf("Informe o valor de 'A': "); scanf("%f", &a); }while(a==0); printf("Informe o valor de 'B': "); scanf("%f", &b); printf("Informe o valor de 'C': "); scanf("%f", &c); printf("\n\nO resultado.\n"); // void calculo(); calculo(a,b,c); } Tem como eu retornar um vetor, sem ser com void, ou seja sem printf. tem que usar algum parametro.? ponteiro? esse ultimo nao aprendi ainda, conheco pouco
  19. É serio. Ta desse jeito no slide. Estou ate com o slide aqui kkkk mas bom que vcs me ajudaram... thanks. adicionado 24 minutos depois Tem como eu retornar os valores de um vetor? sem ser void.
  20. Entendi agora. Valeu, deu certo aqui. Estranho que com int/char da certo. Estava seguindo a mesma forma que o professor fez e colocou no slide dele. No slide dele ele chama a funcao normal, so que nao coloca os parametros ainda. Dessa forma: int calculo (); calculo(int a, int b); // So aqui que ele coloca o que a funcao recebe. Obrigado!!!
  21. @Simon Viegas Siga os codigos abaixo. Nesse codigo agora se voce roda-lo nao vai da certo. #include <stdio.h> #include <math.h> #include <stdlib.h> main (){ float a,b,c, x,x2,y; do{ printf("Informe o valor de 'A': "); scanf("%f", &a); }while(a==0); printf("Informe o valor de 'B': "); scanf("%f", &b); printf("Informe o valor de 'C': "); scanf("%f", &c); printf("\n\nO resultado.\n"); float calculo(); //calculo(a,b,c); printf("DElta %f.\n", calculo(a,b,c)); } float calculo(float a, float b, float c){ float delta;// res, x,x2; delta=b*b-4*a*c; return delta; } porém se voce rodar esse codigo agora vai da certo. segue o codigo. #include <stdio.h> #include <math.h> #include <stdlib.h> float calculo(float a, float b, float c){ float delta;// res, x,x2; delta=b*b-4*a*c; return delta; } main (){ float a,b,c, x,x2,y; do{ printf("Informe o valor de 'A': "); scanf("%f", &a); }while(a==0); printf("Informe o valor de 'B': "); scanf("%f", &b); printf("Informe o valor de 'C': "); scanf("%f", &c); printf("\n\nO resultado.\n"); //float calculo(); //calculo(a,b,c); printf("DElta %f.\n", calculo(a,b,c)); } É isso que eu gostaria de entender. Qual a diferenca entre os dois para so na segunda opcao da certo (quando a funcao fica em cima). E porque so ocorre com o float. (porque o float so funciona em cima da funcao main)? adicionado 4 minutos depois ----------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- Resolvendo a equacao do segundo grau: #include <stdio.h> #include <math.h> #include <stdlib.h> float calculo(float a, float b, int c){ float delta, res, x,x2; delta=b*b-4*a*c; if (delta==0){ x = ((b*-1) - sqrt(delta))/2*a; printf("Delta e 0 (ZERO).\n"); printf("O valor de x e x2 e %f.\n", x); } else if(delta>0){ x= ((b*-1) + sqrt(delta))/2*a; x2= ((b*-1) - sqrt(delta))/2*a; printf("Delta e %f.\n", delta); printf("O valor de x e %f.\n", x); printf("O valor de x2 e %f.\n", x2); } else{ printf("Delta e igual a %f.\n"); printf("Nao exsite raiz real.\n"); } //return res; } main (){ float a,b,c, x,x2,y; do{ printf("Informe o valor de 'A': "); scanf("%f", &a); }while(a==0); printf("Informe o valor de 'B': "); scanf("%f", &b); printf("Informe o valor de 'C': "); scanf("%f", &c); printf("\n\nO resultado.\n"); // float calculo(); calculo(a,b,c); } Esta correto? Acho que so devo mudar o tipo da funao de float para void , ja que nao esta retornando nada.
  22. @isrnick Ontem acabei nao resfazendo o programa a noite por sono , mas agora eu concertando o parametro do tipo int para float acabou que nao fez diferenca, a funcao da errado da mesma forma. Apenas da certo se eu coloca-la em cima do corpo principal (main) , você sabe me dizer porque isso ocorre apenas com o float.? Desde de já grato pelo ajuda.
  23. @isrnick mesmo assim amigo. o do meu colega não deu certo, e não tinha esse erro. Acho que não tinha, pois era diferente a questão
  24. #include <stdio.h> #include <math.h> #include <stdlib.h> main (){ float a,b,c, x,x2,y; do{ printf("Informe o valor de 'A': "); scanf("%f", &a); }while(a==0); printf("Informe o valor de 'B': "); scanf("%f", &b); printf("Informe o valor de 'C': "); scanf("%f", &c); printf("\n\nO resultado.\n"); float calculo(); calculo(a,b,c); } float calculo(float a, float b, int c){ float delta;// res, x,x2; delta=b*b-4*a*c; return delta; } Nao retorna Eu e um colego discutimos uma questao parecida, mas não dava certo. E quando ele colocou em cima do main deu certo.
  25. Boa madrugada! Sera que vocês podem me tirar uma duvida. Eu estava criando uma funcao para encontrar o delta e a equacao do segundo grau, mas quando eu clico para rodar nao vai. Mostra>>> === Build file: "no target" in "no project" (compiler: unknown) ===| error: conflicting types for 'calculo'| note: an argument type that has a default promotion can't match an empty parameter name list declaration| previous declaration of 'calculo' was here| MAS QUANDO EU COLOCA EM CIMA DO CORPO PRINCIPAL DA CERTO. (acabei de perceber que nem colocando em cima resolve, quando nao retorna nada resolve, mas quando tem que retorna da B.O...........) Porque isso acontece?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!