Jump to content
Fórum Script Brasil
  • 0

Exercicio ponteiros C help


cerraosso
 Share

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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);
}

 

Edited by roccoC/C++
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...