Ajuda com exercicio

1. Ajuda com exercicio

william jussim
jussim

(usa Ubuntu)

Enviado em 13/06/2018 - 20:09h

Boa Noite pessoal, estou começando a estudar programação e tem um exercicio que estou com dificuldades.
O exercicio é o seguinte:

Ler uma palavra. Gerar e imprimir uma nova string que ser´a a palavra lida contendo um espa¸co em branco ap´os cada caractere.

o meu algoritmo ficou dessa forma:

/*
Ler uma palavra. Gerar e imprimir uma nova string que ser´a a palavra lida contendo
um espa¸co em branco ap´os cada caractere.
*/
#include <iostream>
#include <string.h>
#include <cstring>



using namespace std;

int main()
{
char nome[50], nome2[100];
int a=0, b=0;


cout << "Digite uma palavra: " << endl;
cin.getline(nome,50);
b=strlen(nome)*2;

for (int i=0; i < b; i+2)
{
nome2[i]=nome[a];
a++;
}

for (int i=1; i < b; i+2)
{
nome2[i]=32;

}



cout << nome2 << endl;

}

Alguem pode me explicar o porque da minha logica não funcionar? e me ajudar a entender melhor como solucionar este problema?



  


2. Re: Ajuda com exercicio

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/06/2018 - 00:46h

Onde você disse “i+2”, deveria provavelmente ter dito “i+=2”. A primeira forma obtém uma copia do valor de i e acrescenta 2 a essa cópia; a segunda é que altera o valor contido na variável.

Mas seu programa tem algumas outras estranhezas:

  • Incluir tanto <string.h> quanto <cstring>, pois ambos contêm as mesmas declarações, com pouca diferença (em termos práticos, especialmente no seu caso, nenhuma diferença), mas a forma que deve ser preferida em C++ é <cstring>.

  • Por que usar <cstring> e arrays de caracteres, em vez de <string> e std::string? Seu programa provavelmente ficaria mais legível usando as versões em C++.

  • Por que dois laços de iteração, um para copiar as letras, e outro para colocar espaços? Por que não fazer as duas operações dentro do mesmo laço?

  • Não vi você colocar o terminador (byte nulo) ao final da string em nome2. Enquanto você trabalhar com strings ao estilo do C, em vez de std::string do C++, certamente deveria fazê-lo.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts