Ir ao conteúdo
  • Cadastre-se

UmPrograma

Membro Pleno
  • Posts

    182
  • Cadastrado em

  • Última visita

Tudo que UmPrograma postou

  1. Aqui esta o codigo: #include <stdio.h> #include <stdlib.h> struct gente{ char sexo[11]; char cor[11]; char cabelo [11]; int id; }; main(){ int e, *a; printf("Informe a quantidade de pessoas que passaram pela pesquisa.\n"); scanf("%d", &e); a=&e; struct gente aaa; void registro(int e); registro(e); void imprimir(struct gente *aaa, int e); imprimir(&aaa, e); }/* struct gente{ char sexo[11]; char cor[11]; char cabelo [11]; int id; };*/ void registro(int e){ struct gente aaa[e]; int i ; for(i=0;i<e;i++){ printf("Informe o sexo: "); scanf("%s%*c", &aaa[i].sexo); printf("Informe a cor dos olhos: "); scanf("%s%*c", &aaa[i].cor); printf("Informe a cor do cabelo: "); scanf("%s%*c", &aaa[i].cabelo); printf("Informe a idade: "); scanf("%d%*c", &aaa[i].id); } } void imprimir(struct gente *aaa, int e){ int i; printf("Fique agora com os dados das pesquisas.\n\n"); for(i=0;i<e;i++){ printf("A pessoa do sexo %s, ",aaa[i].sexo); printf("tem os olhos %s, ",aaa[i].cor); printf("tem os cabelos %s, ", aaa[i].cabelo); printf("tem a idade de %d anos.\n\n", aaa[i].id); } }
  2. Um dica: Quando for postar questoes aqui use a a ferramente code, ela nos auxilia a exengar melhor o codigo.
  3. Olá, amigos. Como vão? Estava aqui programando e tentei fazer um programinha que fosse dividido em partes (meu conceito de funcao, ahaha). So que nao estou conseguindo fazer com que a funcao imprima a estrutura. Segue como ficou a funcao registro o e de imprimir; void registro(int e){ struct gente aaa[e]; int i ; for(i=0;i<e;i++){ printf("Informe o sexo: "); scanf("%s%*c", &aaa[i].sexo); printf("Informe a cor dos olhos: "); scanf("%s%*c", &aaa[i].cor); printf("Informe a cor do cabelo: "); scanf("%s%*c", &aaa[i].cabelo); printf("Informe a idade: "); scanf("%d%*c", &aaa[i].id); } } void imprimir(struct gente *aaa, int e){ int i; printf("Fique agora com os dados das pesquisas.\n\n"); for(i=0;i<e;i++){ printf("A pessoa do sexo %s, ",aaa[i].sexo); printf("tem os olhos %s, ",aaa[i].cor); printf("tem os cabelos %s, ", aaa[i].cabelo); printf("tem a idade de %d anos.\n\n", aaa[i].id); } } Só na hora de imprimir que esta aparecendo lixo de memoria.
  4. @giu_d Opa, valeu amigo. Nessa parte : voce faz para achar a diagonal secundaria. Eu no caso faco da seguinte forma para achar a diagonal secundaria. if(i==4-1-j) // ou if(j==4-1-i) Mas no caso, o exercicio pede que ache o menor numero ACIMA da diagonal secundaria. Ai achei eu formula ai. OBS: Eu cheguei ate a diminuir o o tamanho da matriz para ficar mais fácil confirir os numeros acima.
  5. So para finalizar, nao hora de eu passar a matriz para funcao eu acabei colocando o '&', sendo que nem faço isso com vetor. então depois das mudancas que voce mostrou ai acima, ainda modifiquei o seguinte trecho: Agora esta tudo beleza.
  6. @AnsiC Valeu amigo. Ai no caso so colocar esse "if" dentro de outro, já que quero o menor numero acima da diagonal secundaria.
  7. 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.
  8. 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.
  9. 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.
  10. É 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)
  11. 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é?
  12. Pessoal conseguir resolver. So faltava passar para a funcao os valores. Dessa forma : --> mudar (vet2);
  13. 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; } }
  14. Boa noite, pessoal. Como vão? Vocês poderiam me dizer como consigo instalar wireless na minha maquina virtual (linux). Gostaria de poder ver as redes wlan0, e afins. Já baixei, extrair, mas nao deu certo. Como proceder?
  15. Interessante como voce alterou o valor de 'd'. ( 'p' aponta para 'd', ai mudando um, muda o outro) Muito bom mesmo. Gradecido pela ajuda....
  16. 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)
  17. 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.
  18. 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.
  19. @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.
  20. 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?
  21. @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.
  22. 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.
  23. 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?
  24. @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
  25. É 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.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!