sexta-feira, 6 de março de 2015

Retornando ponteiro

É válido lembrar que ponteiro é uma variável que contém um endereço de memória.
Também quero lembrar que funções em algumas vêzes podem retornar um valor para a função main(); fica bem claro que o valor retornado é do tipo declarado no protótipo da função.
Programas mais complexos em C algumas vêzes nessecitam de funções
que retornam um ponteiro, isto é, um endereço de memória.
Criar uma função que retorna um ponteiro em C é muito fácil, basta colocar um asterisco antes do nome da função.
No exemplo mostrado aqui, temos a função *primo_Nprimo(); que como você ver retorna um ponteiro que será usado para uma alteração
numa posição específica do vetor original. Esta função é capaz de mostrar números primos e não primos contidos no vetor.

Veja abaixouma  imagem do programa em execução:



Veja abaixo o código do programa:



#include <conio.h>
#include <stdio.h>
void Janela5 ( ) {
    int lin, col;
    col = 0;
    for ( lin = 2; lin <= 24; lin++ )
         for ( col = 2; col <= 78; col++ ) {
             gotoxy ( col, lin );
             textbackground ( BLUE );
             printf ( " " );
         }
}
int *primo_Nprimo ( int a [ ], int b [ ], int y ) {
    int i, j, primo, Nprimo, s = 0;
    textcolor ( LIGHTBLUE );
    gotoxy ( 23, 9 );
    printf ( "Apresentando Números não primos entre 0 e 15" );
    textcolor ( LIGHTGREEN );
    gotoxy ( 23, 11 );
    for ( i = 0; i < 15; i++ ) {
         for ( j = 2, primo = 1; j < a [ i ]; j++ )
             if ( ( a [ i ] % j ) == 0 )
                 primo = 0;
         if ( primo ) {
             b [ s ] = a [ i ];
             s++;
         }
         for ( j = 2, Nprimo = 0; j < a [ i ]; j++ )
             if ( ( a [ i ] % j ) == 0 )
                 Nprimo = 1;
         if ( Nprimo )
             printf ( " %d ", a [ i ] );
    }
    getche ( );
    return a + y;
}
int main ( ) {
    system ( "title RETORNANDO PONTEIRO" );
    Janela5 ( );
    int a [ ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
    int b [ 15 ];
    int i, s = 0;
    textcolor ( LIGHTRED );
    gotoxy ( 33, 3 );
    printf ( "RETORNANDO PONTEIRO" );
    textcolor ( LIGHTBLUE );
    gotoxy ( 23, 5 );
    printf ( "Apresentando abaixo o vetor original " );
    textcolor ( LIGHTGREEN );
    gotoxy ( 15, 7 );
    for ( i = 0; i < 15; i++ ) {
         printf ( " %d ", a [ i ] );
    }
    getche ( );
    *primo_Nprimo ( a, b, 7 ) = 99;
    textcolor ( LIGHTBLUE );
    gotoxy ( 23, 13 );
    printf ( "Apresentando Números primos entre 0 e 15 " );
    textcolor ( LIGHTGREEN );
    gotoxy ( 23, 15 );
    for ( s = 1; s < b [ s ]; s++ ) {
         printf ( " %d ", b [ s ] );
    }
    textcolor ( LIGHTBLUE );
    gotoxy ( 15, 17 );
    printf ( "Apresentando abaixo o vetor modificado pelo ponteiro " );
    textcolor ( LIGHTGREEN );
    gotoxy ( 15, 19 );
    for ( i = 0; i < 15; i++ ) {
         printf ( " %d ", a [ i ] );
    }
    Sleep ( 1800 );
    textcolor ( LIGHTRED );
    gotoxy ( 36, 23 );
    printf ( "MUITO OBRIGADO" );
    getche ( );
    exit ( 0 );
    return ( 0 );
}



Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.