Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
PESSOA

C++

Recommended Posts

PESSOAL, POR FAVOR ME DEEM UM AUXILIO POIS PRECISO DE ALGUNS EXEMPLOS DE FUNÇÃO EM C++, SÃO PARA EXERCÍCIOS DA FACULDADE, ALGO COMO FAZER UMA FUNÇÃO PARA EXIBIR OS NUMEROS PARES QUE FOREM DIGITADOS PELO USUÁRIO. EU SOU TOTALMENTE VERDINHO NESTE EM C++. SE ALGUEM SOUBER DE ALUMA APOSTILA.  :-(P

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guest Spiderman

Colega Pessoa, você quer uma função que verifique se o no. digitado pelo usuário é par? Se for isso, te mando o código em C++, ok?

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

:-DD e ai Spiderman beleza!

Cara, eu preciso de uma função que ao ser digitado um nome (string) qualquer ela me apresente o nome ao contrario, POR EXEMPLO:

DIGITE SEU NOME: SPIDERMAN

SEU NOME AO CONTRARIO É:NAMREDIPS

VOCÊ PUDER ME ENVIAR ESTE CÓDIGO AGRADEÇO,

UM ABRAÇO.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guest Spiderman

Ok colega, eis o código:

#include <iostream.h>

#include <stdio.h>

#include <string.h>

#include <conio.h>

const int COMP = 81;   //comprimento da cadeia de caracteres

//protótipo da função inverteString

void inverteString(char*);  

int main(int argc, char **argv)

{

   char frase[COMP];

   cout << "Digite uma frase (Max. 80 caracteres): ";

   gets(frase);

   inverteString(frase);

   cout << "Frase invertida: " << frase;

   getch();

   return 0;

}

// Inverte uma cadeia de caracteres

//Essa função recebe como argumento um endereço, perceba

//que s é um ponteiro para caracteres

void inverteString(char* s)

{

   //ponteiro auxiliar, iniciar com uma cadeia nula

   char* aux = "";  

   int t;

   t = strlen(s);  

   for(int i = 0; i < t; i++)

   {        

       *(aux + i) = s[t - 1 - i];

   }

   *(aux + t) = '\0';

   strcpy(s, aux);

}

Espero ter sido útil.

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado Originalmente por Spiderman@13 Set. 2002,19:11

void inverteString(char* s)

{

   //ponteiro auxiliar, iniciar com uma cadeia nula

   char* aux = "";  

   int t;

   t = strlen(s);  

   for(int i = 0; i < t; i++)

   {        

       *(aux + i) = s[t - 1 - i];

   }

   *(aux + t) = '\0';

   strcpy(s, aux);

}

<font color='#000080'>Esse código causa uma quebra no programa. Você inicializa a variável char* aux num endereço com uma string vazia (de um único byte, '\0'). Após isso você começa a avançar além do espaço alocado pelo compilador (que é de apenas 1 byte), e começa a escrever sobre endereço inválido.

Sugiro uma inverteString( ) assim:


void inverteString(char* s)
{
       int t = strlen(s); // tamanho da string
       char* aux = new char[t+1]; // aloca apenas o espaço necessário
       strcpy(aux, s); // copia a string e coloca o limitador nulo
       for (int i=0; i<t; i++)
               s[ i ] = aux[ t-i-1 ];
       delete aux; // libera a memória alocada
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

<font color='#F52887'># Programa que lê os numeros pares ou impares digitados #

#include <iostream.h>

#include <conio.h>

void main(){

long x;

cout<<"Digite um numero por favor ";

cin>>x;

if(x%2 == 0 )

cout<<"O numero " <<x <<" digitado e  par";

else{

cout<<"O numero " <<x <<" digitado e impar";

}

getch();

clrscr();

}

Abraços !!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guest Spiderman

Essa é a solução ideal, colega DanielKO. Tentei escrever esse código sem usar alocação dinâmica de memória porque percebi que o colega Pessoa ainda não sabe todos os "macetes" da linguagem C++. O código original não chama strcpy porque faço inverteString retornar um ponteiro para caracteres. Assim, inverteString teria o seguinte protótipo:

#include <iostream.h>

...

...

char* inverteString(char*);

...

...

também não é necessário usar delete porque aux é uma variável local. Todas as variáveis locais são destruídas quando uma função termina, ok?

Valeu pela sugestão, colega!

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado Originalmente por Spiderman@15 Set. 2002,14:24

também não é necessário usar delete porque aux é uma variável local. Todas as variáveis locais são destruídas quando uma função termina, ok?

<font color='#000080'>aux é uma variável ponteiro local, mas a memória que eu aloquei prá ela não é local. new vai alocar memória no heap, e ela precisa ser liberada no final com um delete.

No seu código você alocou apenas 1 byte local ( char* aux = ""; ) para onde apontou o ponteiro aux. Incrementando aux vai fazer com que você tente escrever/ler numa região de memória inválida (provavelmente alguma área de código executável). O que eu fiz foi usar o new para criar um array dinamicamente (a mesma coisa que usar o malloc() em C).

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado Originalmente por DanielKO@13 Set. 2002,21:34


       delete aux; // libera a memória alocada

<font color='#000080'>Ooops... erro de digitação...  :;):

O correto seria:


       delete[] aux; // libera a memória alocada

:**

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guest dexter110

char* inverte(char *st)

{

char *st2=st,*st3=st,st4;

while(*st)

st++;

while(st2<st)

{

st4=*(--st);

*st=*st2;

*st2++=st4;

}

return st3;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guest Spiderman
aux é uma variável ponteiro local, mas a memória que eu aloquei prá ela não é local. new vai alocar memória no heap, e ela precisa ser liberada no final com um delete.

Verdade, esqueci desse detalhe!

Valeu...

:-DD

Compartilhar este post


Link para o post
Compartilhar em outros sites

IREI TESTAR HOJE ESTES PROGRAMAS POIS É PARA FACULDADE E SÓ CONSEGUI O COMPILADOR DO TURBO C++ ontem , REALMENTE SOU NOVO EM PROGRAMAÇÃO, ESTOU APRENDENDO AOS POUCOS, COM ALGUM MATERIAL QUE CONSEGUI NA INTERNET E COM AJUDA DOS COMPANHEIROS,  MESMO ASSIM VALEU GALERA.  :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×