Ir para conteúdo
Fórum Script Brasil
  • 0

Exercicio ponteiros C help


cerraosso

Pergunta

Tenho seguinte exercicio:

Escrever um programa para alocar uma área de memória para armazenar 3 valores float e 3 caracteres, preencher esta área com dados provenientes do teclado e, por último, apresentá-los do último até o primeiro, isto é, de maneira inversa àquela do armazenamento.

 

meu codigo:

int main(int argc, char *argv[])
{
    
   int i;
   int * ptr1;
   int * ptr2;
   
   ptr1 = malloc(3*sizeof(float)); 
   ptr2 = malloc(3*sizeof(char));  
   
   
   if(ptr1 != NULL){
           
           for(i=0;i<3;i++){
                printf("digite valores float: ");            
                scanf("%f",&ptr1[i]);
                *ptr1[i] = i;
           }
   }  
   
   if(ptr2 != NULL){
           
           for(i=0;i<3;i++){
                printf("digite os caracteres: ");
                fflush(stdin);           
                scanf("%c",&ptr2[i]);
                ptr1[i] = i;
           }
   } 
                 
    for(i=3;i>0;i--){
        printf("Resultado %f",ptr1[i]);
    }

  
  system("PAUSE");	
  return 0;
}

Erro: Eu coloco 1.1,1.2 e 1.3 nos floats e a,b,c no caratecres, e na saida sai tudo zero, ex: 0.0 e os caracteres são letras estranhas.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Dei umas corrigidas no seu código, dê uma olhada e compare, veja onde errou:

 

 

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(){
    int i;

    //int * ptr1;
    //int * ptr2;

    float *ptr1;
    char *ptr2;
    ptr1  = ( float* ) malloc ( 3 *sizeof ( float* ) );
    ptr2  = ( char* ) malloc ( 3 *sizeof ( char* ) );

    //ptr1 = malloc(3*sizeof(float));
    //ptr2 = malloc(3*sizeof(char));

    if ( ptr1 != NULL ) {
        printf("digite valores float: ");
        for ( i = 0; i < 3; i++ ) {
            scanf("%f",&ptr1 [ i ] );fflush(stdin);
            //ptr1 [ i ] = i;
        }
    }
    printf("\ndigite os caracteres: ");
    if ( ptr2 != NULL ){
        for ( i = 0; i < 3; i++ ) {
            scanf("%c",&ptr2 [ i ] );fflush(stdin);
            //ptr1 [ i ] = i;
        }
    }
    printf ("\nO inverso dos floats digitados é : \n");
    //printf ("\n\n");
    for ( i = 3; i >= 0; i-- ){
        if ( ptr1 [ i ] != 0 ){
            printf ("\n %.1f ", ptr1 [ i ] );
        }
    }
    getche();
    printf ("\n\nO inverso dos caracteres digitados é : \n");
    //printf ("\n\n");
    for ( i = 3; i >= 0; i-- ){
        if ( ptr2 [ i ] != 0 ){
            printf ("\n %c ", ptr2 [ i ] );
        }
    }
    getche();
    return(0);
}

 

Editado por roccoC/C++
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...