Ir ao conteúdo
  • Cadastre-se

Maria_epbn

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

Reputação

3
  1. @AnsiC ok, vou tentar fazer. @GBMelkor e @AnsiC muito obrigada pela ajuda!
  2. @AnsiC o professor pediu apenas uma função. Enunciado: Crie uma função que receba como parâmetros dois vetores de inteiros: x1 e x2 e as suas respectivas quantidades de elementos n1 e n2. A função deverá retornar um ponteiro para um terceiro vetor, x3, alocado dinamicamente, contendo a união de x1 e x2 e usar o ponteiro qtd para retornar o tamanho de x3. Sendo x1={1,3,5,6,7} e x2={1,3,4,6,8}, x3 irá conter {1,3,4,5,6,7,8}. Imprima x3 na main. Protótipo: int* uniao (int *x1, int *x2, int n1, int n2, int *qtd);
  3. Olá,@AnsiC, este é o erro do programa. Os elementos 8 e 7 deveriam estar inclusos no vetor união mas quando compilo o programa só aparecem os elementos 1 3 5 4 6. meu programa está assim: #include <stdio.h> #include <stdlib.h> int *uniao (int *x1, int *x2, int n1, int n2, int *qtd); int main() { int i, x1[]={1,3,5,6,7}, x2[]={1,3,4,6,8}, *x3, tam1, tam2, tam3; tam1 = 5; tam2 = 5; tam3 = tam1 + tam2; if (x1==NULL) { printf("\n\nImpossível alocar memória.\n\n"); return 1; } if (x2==NULL) { printf("\n\nImpossível alocar memória.\n\n"); return 1; } // IMPRIMINDO OS VETORES printf("\n\nVetor 1: "); for(i=0; i<tam1; i++) { printf("\t%d", *(x1+i)); } printf("\n\n"); printf("\n\nVetor 2: "); for(i=0; i<tam2; i++) { printf("\t%d", *(x2+i)); } x3 = (int*)malloc(tam3*sizeof(int)); x3 = uniao(x1,x2,tam1,tam2,x3); printf("\n\nVetor união: "); for(i=0; i<tam1; i++) { printf("\t%d", *(x3+i)); } printf("\n\n"); } int *uniao (int *x1, int *x2, int n1, int n2, int *qtd) { int i=0, j=0, *x3; x3 = (int*)malloc((n1+n2) * sizeof(int)); if (x3 == NULL) { printf("\n\nImpossível alocar memória.\n\n"); return 0; } for(i=0; i<(n1+n2); i++) { if(*(x1+i)== *(x2+i)) { *(x3+j) = *(x1+i); j++; } else if(*(x1+i)<*(x2+i)) { *(x3+j) = *(x1+i); *(x3+j+1) = *(x2+i); j=j+2; } else if (*(x1+i)>*(x2+i)) { *(x3+j) = *(x1+i); *(x3+j+1) = *(x2+i); j=j+2; } } return (x3); }
  4. Crie uma função que receba como parâmetros dois vetores de inteiros: x1 e x2 e as suas respectivas quantidades de elementos n1 e n2. A função deverá retornar um ponteiro para um terceiro vetor x3, alocado dinamicamente, contendo a união de x1 e x2 e usar o ponteiro qtd para retornar o tamanho de x3. Eu fiz a função mas na hora de compilar não aparece todos os elementos de x3, está aparecendo apenas os 5 primeiros. ex.: Vetor 1: 1 3 5 6 7 Vetor 2: 1 3 4 6 8 Vetor união: 1 3 5 4 6 int *uniao (int *x1, int *x2, int n1, int n2, int *qtd) { int i=0, j=0, *x3; x3 = (int*)malloc((n1+n2) * sizeof(int)); if (x3 == NULL) { printf("\n\nImpossível alocar memória.\n\n"); return 0; } for(i=0; i<(n1+n2); i++) { if(*(x1+i)== *(x2+i)) { *(x3+j) = *(x1+i); j++; } else if(*(x1+i)<*(x2+i)) { *(x3+j) = *(x1+i); *(x3+j+1) = *(x2+i); j=j+2; } else if (*(x1+i)>*(x2+i)) { *(x3+j) = *(x1+i); *(x3+j+1) = *(x2+i); j=j+2; } } return (x3); }
  5. Escreva um programa que leia o tamanho e aloque memória para dois vetores reais de mesmo tamanho, leia os dados e preencha os vetores e imprima os vetores. Chame uma função que receba dois vetores, o tamanho e uma variável ponteiro. a função deve calcular a soma dos elementos do vetor v1 e o produto entre os elementos do vetor v2. a função deve retornar a soma dos elementos de v1. Imprima os valores na main. O meu programa não está aparecendo nenhum erro na hora de compilar, mas quando o programa dá o resultado da soma o valor que está aparecendo é errado. ex.: v1 = 1.0000 2.0000 3.0000 Soma dos elementos de v1 = 0.0000 #include <stdio.h> #include <stdlib.h> void *SomaProduto (float *vet1, float *vet2, int tam, float *somaelem); int main() { float *v1, *v2, *somaelem; int tam, i; printf("Qual o tamanho dos vetores? "); scanf("%d", &tam); v1 = (float*)malloc(tam * sizeof(float)); v2 = (float*)malloc(tam * sizeof(float)); if(v1==NULL || v2==NULL) { printf("\nImpossível alocar memória.\n"); return 1; } printf("Lendo vetor 1: \n\n"); for(i=0;i<tam;i++) { printf("\n\nElemento [%d]: ", i); scanf("%f", (v1+i)); } printf("Lendo vetor 2: \n\n"); for(i=0;i<tam;i++) { printf("\n\nElemento [%d]: ", i); scanf("%f", (v2+i)); } printf("\n\nImprimindo vetor 1:\n "); for(i=0;i<tam;i++) { printf("\t%f", *(v1+i)); } printf("\n\nImprimindo vetor 2:\n "); for(i=0;i<tam;i++) { printf("\t%f", *(v2+i)); } somaelem = SomaProduto(v1,v2,tam, somaelem); printf("\n\nSoma dos elementos do vetor v1 = %f", *somaelem); printf("\n\n\n"); } void *SomaProduto (float *vet1, float *vet2, int tam, float *somaelem) { float produtoelem; int i; somaelem = (float*)malloc(tam * sizeof(float)); *somaelem=0; for(i=0; i<tam; i++); { *somaelem += *(vet1+i); } produtoelem=0; for(i=0; i<tam; i++) { produtoelem = produtoelem * (*(vet2+i)); } return (somaelem); }
  6. Você tinha razão aquele primeiro for estava errado. Agora ficou assim a função e não está mais dando erro. Muito obrigada pela ajuda! void *MaiorMenor (float *vet1, float *vet2, int tam, float *maior) { float *menor; int i; maior = (float*)malloc(tam * sizeof(float)); maior = (vet1+0); for(i=0; i<tam; i++) { if(*(vet1+(tam-i-1)) > *maior) { *maior = *(vet1+(tam-i-1)); } } menor = (float*)malloc(tam * sizeof(float)); menor = (vet2+0); for(i=0; i<tam; i++) { if(*(vet2+(tam-i-1)) < *menor) { *menor = *(vet1+(tam-i-1)); } } return (maior); }
  7. Meu programa esta dando falha de segmentação nessa função. Uma função que recebe dois vetores, o seu tamanho e uma variável ponteiro. A função deve achar o maior elemento do vetor v1 e o menor elemento do vetor v2. A função deve retornar o valor do maior elemento de v1. void *MaiorMenor (float *vet1, float *vet2, int tam, float *maior) { float *menor; int i; maior = (float*)malloc(tam * sizeof(float)); for(maior=0; maior<tam; maior++) { for(i=0; i<tam; i++) { if(*(vet1+(tam-i-1)) > *maior) { *maior = *(vet1+(tam-i-1)); } } } menor = (float*)malloc(tam * sizeof(float)); for(menor=0; menor<tam; menor++) { for(i=0; i<tam; i++) { if(*(vet2+(tam-i-1)) < *menor) { *menor = *(vet1+(tam-i-1)); } } } return (maior); }

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