Dev - C++ - guardar valores de variables en un string y valores en un arreglo

 
Vista:
Imágen de perfil de Francisco
Val: 55
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

guardar valores de variables en un string y valores en un arreglo

Publicado por Francisco (36 intervenciones) el 06/02/2018 02:10:50
Les mando los dos siguientes códigos:

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
32
33
34
35
36
37
38
39
#include<iostream>
using namespace std;
int main(){
    string palabra=" ";
    int i=0;
    char car=' ';
    while(car!='0'){
        cout<<"ingrese caracter "<<endl;
        cin >> car;
        palabra[i] = car;
        i++;
    }
    cout<<"palabra "<<endl;
    for(int i=0;i<palabra.length();i++){
        cout<< palabra[i]<<endl;
    }
 
    return 0;
}
//guardar caracteres en un string
//de forma manual:
#include<iostream>
using namespace std;
int main(){
 
                string palabra=" ";
               char car1=' ', car2=' ';
             cin >> car1;
             cin >> car2;
            palabra[0]=car1;
            palabra[1]=car2;
       cout<<"palabra "<<endl;
    for(int i=0;i<palabra.length();i++){
 
                  cout<<palabra[i];
 
                 return 0;
 
}

Bueno, esos son los codigos, pero me imprimen un solo caracter (el primero de izquierda a derecha),
El segundo codigo fue almacenar valores ingresados en las distintas posiciones de la cadena o string sin uso de bucle, creo que el mismo criterio de guardar valores tanto ingresados como no ingresados (ej. 6) se pueden guardar en las distintas posiciones y elementos de los arreglos.
Ahora bien, en ambos. ¿Donde esta el error de codigo?
Les mando otro codigo pero de crear un arreglo de los primeros diez numeros. Lo voy a hacer de dos maneras:
Forma 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iiostream>
using namespace std;
int main(){
       int arr[10];
        int i=0, c=0;
        for(i=1;i<=10;i++){
                    arr[c]= i;
                    c++;
               }
          cout<<"valores del arreglo "<<endl;
        for(i=1;i<=c;i++){
                cout<< arr[i]<<endl;
           }
        return 0;
}
forma 2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//esta vez con cinco elementos
#include<iostream>
using namespace std;
     iint main(){
            int arr[5];
             int i=0;
           arr[0]=2;
          arr[1]=  4;
          arr[2]= 3;
           arr[3]= 8;
          arr[4] = 1;
     cout << "arreglo "<<endl;
      for(i=0;i<5;i++){
             cout<< arr[i] <<endl;
     }
     return 0;
}
Necesito saber cuáles son los errores por favor. Muchas gracias
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
sin imagen de perfil
Val: 171
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

guardar valores de variables en un string y valores en un arreglo

Publicado por juanki (73 intervenciones) el 06/02/2018 23:27:23
Hola

bueno, tienes un poco de confusión y algunos errores:

En los dos primeros programas estás usando la clase string como un array, la clase string ya trae una serie de métodos para manejar más cómodamente los array de char. Tu la has declarado del tamaño de un espacio, por lo tanto tiene esa longitud, por eso te imprime solo el primer carácter. Declara la variable palabra sin asignarle un carácter de espacio y usa el método push_back para añadirle caracteres al final. O declárala más grande y te entrarán más caracteres, pero no lo recomiendo, siempre vas a correr el riesgo de saltarte el límite.

Documentación de la clase string: http://www.cplusplus.com/reference/string/string/

Además, en el segundo has dejado el return dentro del bucle

En el tercer programa tienes mal las condiciones de los bucles, recuerda que los índices empiezan por 0 (cero), además tu usas para finalizar el bucle <=, cuando tiene que ser <, ya que si no estás usando una posición que no corresponde a tu array. Además en el tercero usas i<=c, cuando c no contiene el límite del array. Lo mejor de todo es usar una constante con el tamaño del array y la usas tanto para declararlo como para recorrerlo, así te evitarás problemas.

En el ejemplo 4 tienes int main mal escrito, te sobra una i.

Un saludo
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