Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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

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

×