Dev - C++ - Error de compilacion

 
Vista:

Error de compilacion

Publicado por Sara (8 intervenciones) el 21/08/2015 22:03:48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstring>
using namespace std;
int main(){
    int n;
    cin>>n;
    char Cadena1[n+1];
    char Cadena2[n+1];
    for(int i=0;i<n;i++)
            cin>>Cadena1[i];
    for(int i=0;i<n;i++)
    Cadena2[i]= " ";
    strcat(Cadena1, Cadena2);
    cout<<Cadena1<<endl;
    system("PAUSE");
 
}

Al compilar este programa me aparece este mensaje: "invalid conversion const char to char"
Que hago para que no me aparezca este mensaje?
El programa tiene que leer una cadena e insertar un espacio por cada caracter de la cadena
Esta bien que haya usado la funcion strcat? o que funcion se podria usar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de vangodp
Val: 73
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Error de compilacion

Publicado por vangodp (287 intervenciones) el 22/08/2015 00:33:31
En ese programa nada esta bien. La forma con la que creas el array supuestamente dinámico es totalmente desaconsejada y no hace parte del estándar.

No puedes hacer esto:
int n;
cin>>n;
char Cadena1[n+1];

Es incorrecto porque entre los [] debes pasar una constante. Lo correcto es:
const int n;
char Cadena1[ n+1 ];

No puedes leer el el tamaño de este array con teclado porque la declaración de un array es esta char array[const int];

La forma correcta de crear un array dinámico es usando new y acceder mediante punteros. Un ejemplo es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
 
int main (){
 
    int n;
    cout << "Tamanio?: ";
    cin >> n;
 
    //La forma correcta de declarar un array 
    //dinamico segun el standar C++ esta compuesta por 2 acciones.
 
    //1º accion es declaracion
    char *Cadena = new char[n];
 
    // ahora tienes un array de n numeros creado correctamente.
 
    //Se usa de forma normal, igual que un array normal.
    Cadena[0] = 'X';
 
    cout << Cadena[0] << endl;
 
 
    //2º accion es la liberacion. Siempre que hagas un new, debes hacer un delet, recuerdalo, o tendras memory leaks.
    delete[] Cadena;
    cin.ignore();
    return 0;
}

Ahora vamos a ver otro error:
Cadena2[i]= " "; //¿Ves algo raro? XDD

¿¿si se trata de un array(no una matriz) como quieres meter un " "(string), donde solo le cabe ' '(char)??? ¿Capiche? XD

No creo que strcat sea la opcion en tu caso, si vas a la documentación de cplusplus sobre strcat ( http://www.cplusplus.com/reference/cstring/strcat/ ), verás que lo que hace strcat, es tomar un string e echarlo al final de la cadena como se ve en ese ejemplo:
char str[80];
strcpy (str,"these ");
strcat (str,"strings ");
strcat (str,"are ");
strcat (str,"concatenated.");

que va dar como salida: "these strings are concatenated."

No veo como te va ayudar esa función.

Si estas en C++ una forma seria:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
using namespace std;
 
int main (){
 
    string entrada;
    string salida;
 
    cout << "Entre con la palabra";
    cin >> entrada;
 
    bool espacio = false;
    int contador = 0;
 
    for ( unsigned int i = 0;  i !=  (((entrada.length()%2)==0)? entrada.length()+3 : entrada.length()+4) ; i++ ){
 
        if ( espacio == true ){
            salida = salida + ' ';
            espacio = false;
        }else{
            salida = salida + entrada[contador];
            contador++;
            espacio = true;
        }
    }
 
    cout << salida << ".";
    cin.ignore();
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error de compilacion

Publicado por Sara (2 intervenciones) el 22/08/2015 00:55:58
Si lo que pasa es que el programa lo que debe hacer es leer una cadena e insertar un espacio entre cada caracter de la cadena usando las funciones de la libreria cstring, se puede hacer asi?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de vangodp
Val: 73
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Error de compilacion

Publicado por vangodp (287 intervenciones) el 22/08/2015 23:50:41
Hay funciones para todo, copiar, comparar, concatenar, buscar... Pero no veo ninguna que ponga "mesclar". >_<
Desde luego que algo creo que se pueda hacer. ¿Pero no crees que es mucho sufrir?

Aquí las tienes, echa un ojo. http://www.cplusplus.com/reference/cstring/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar