Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Error en palabra enmarcada.

Estas en el tema de Error en palabra enmarcada. en el foro de C/C++ en Foros del Web. buenas gente, estoy comenzando con c++. y venia bien hasta ahora que comenzamos con strings demas. el programita debe tomar una palabra declarada en una ...
  #1 (permalink)  
Antiguo 20/05/2014, 18:01
Avatar de ignacio85r  
Fecha de Ingreso: mayo-2010
Ubicación: mar del plata
Mensajes: 155
Antigüedad: 14 años
Puntos: 0
Pregunta Error en palabra enmarcada.

buenas gente, estoy comenzando con c++. y venia bien hasta ahora que comenzamos con strings demas.

el programita debe tomar una palabra declarada en una variable y devolverla envuelta en asteriscos.

la cuestion es que al compliar me devuelve este error...

Código:
ignacio@ignacio-PBL2021:~$ g++ temanuevo1.cpp -o temanuevo1
temanuevo1.cpp: In function ‘int main(int, char**)’:
temanuevo1.cpp:10:11: error: ‘palabra’ was not declared in this scope
 asterisco(palabra);
           ^
temanuevo1.cpp: In function ‘void asterisco()’:
temanuevo1.cpp:21:5: error: ‘palabra’ was not declared in this scope
   l=palabra.size()+2;
     ^
alguien me puede orientar a que se debe????

ah.. por las dudas. programo en ubuntu.

este es el codigo del programa.
Código:
  GNU nano 2.2.6         Archivo: temanuevo1.cpp                           

#include<iostream>
#include<stdio.h>

using namespace std;

void asterisco();
int main(int argc, char* argv[]){

string p="casa";
asterisco(palabra);
cout<<"*"<<p<<"*"<<endl;

asterisco(palabra);

return 0;
}

void asterisco()
        {
                {int  l,i;
                l=palabra.size()+2;
                for(i=01;i<=l;i++){
                                cout<<"*"<<endl;
                                }
                cout<<endl;
                }
        }
desde ya muchas gracias!! saludos!
__________________
Los manuales existen por un motivo... explicar el funcionamiento de algo. ;-)
  #2 (permalink)  
Antiguo 20/05/2014, 21:38
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Error en palabra enmarcada.

Código C++:
Ver original
  1. #include<iostream>
  2. #include<stdio.h>
  3.  
  4. using namespace std;
  5.  
  6. string asterisco ( string palabra );
  7. int main ( int argc, char * argv[] ) {
  8.  
  9.     string p = "casa";
  10.     string p_conasterisco;
  11.     p_conasterisco = asterisco ( p );
  12.    
  13.     cout << p_conasterisco;
  14.     return 0;
  15. }
  16.  
  17. string asterisco ( string palabra ) {
  18.     palabra = '*' + palabra + '*';
  19.     return palabra;
  20. }

Hay muchos errores.
Código C++:
Ver original
  1. //GNU nano 2.2.6         Archivo: temanuevo1.cpp
  2. #include<iostream>
  3. #include<stdio.h>
  4.  
  5. using namespace std;
  6.  
  7. void asterisco();   //Error El prototipo de la funcion no espera nada pero cuando llamas la funcion intentas pasar algo llamado palabra pero no es nada (NO EXISTE), no es variable ni string ni nada
  8.  
  9. int main ( int argc, char * argv[] ) { // Si main no espera parametros puedes precindir de (int argc, char * argv[])
  10.  
  11.     string p = "casa";
  12.     asterisco ( palabra );             //El ERROR es que palabra no es una variable por eso da error. Palabra no esta declarada como una variable.
  13.     cout << "*" << p << "*" << endl;
  14.    
  15.     asterisco ( palabra );             //mismo ERROR aparte de que la funcion no espera nada intentas colar algo llamado palabra que no esta declarado
  16.    
  17.     return 0;
  18. }
  19.  
  20. void asterisco() {//Error La Funcion no espera nada pero cuando la llamas intentas pasar algo llamado palabra( PALABRA NO EXISTE), no es variable ni string ni nada da error
  21.     {  // No necesitas esos parentesis ( sobran )
  22.         int  l, i;
  23.         l = palabra.size() + 2; //No funciona por que palabra no ha sido declarada en esta funcion ni es una variable global o sea no existe palabra en esta funcion tampoco lo que l no recibe el tamaño de palabra.
  24.        
  25.         //Intentas recebir un string pero la funcion asterisco no espera nada o sea que palabra no existe y no llega a ejecutar el bucle.
  26.         for ( i = 01; i <= l; i++ ) {
  27.             cout << "*" << endl;
  28.         }
  29.        
  30.         cout << endl;
  31.     }// No necesitas esos parentesis ( sobran )
  32. }

Intente comentar todos pero son demasiados.


Si el programa no hace lo que quieres dime como tiene que quedar la palabra o sea escribe aquí de esta forma

***casa*** y te preparo la función para que entiendas.

para que funcion reciba el string debes declara dentro de las asterisco( string palabra_a_recebir ), entonces la funcion espera un string

ahora le puedo pasar de 2 formas un string o entre parentesis "" una palabra o bien una variable tipo string, veamos 2 ejemplos.

asterisco( "platano" );

O bien asi:

string pal = "platano";

asterisco( pal );
En este caso no necesitas poner doble asterisco ya que se trata de una variable que ya guarda un string y no un string en si.

otra observacion es igual que si vas a retornar un string el tipo de la funcion debe ser string:

Código C++:
Ver original
  1. string asterisco( string palabra ){  //Esto se le asi: funcion asterisco que retorna un string y espera un string llamado palabra.
  2.    //Aqui hara la funcion su magia...
  3.    return palabra;                            //Aquí retorna el string recuerda guardarlo el resultado en otro string para imprimir.
  4. }

Dado que un string no es mas que una cadena de caracteres, a esa cadena le puedes hacer operaciones como "sumar" letras o incluso otro string

Código C++:
Ver original
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. string asterisco ( string palabra );
  5. int main () {
  6.    
  7.     string pescado = "con pescado";    
  8.     string frase = "platano " + pescado;
  9.  
  10.     string str;
  11.     str = asterisco( frase );
  12.     cout << str;    
  13.     return 0;
  14. }
  15.  
  16. string asterisco ( string palabra ) {
  17.     palabra = '*' + palabra + '*';
  18.     return palabra;
  19. }

Suerte:

Última edición por vangodp; 20/05/2014 a las 22:28

Etiquetas: dudas, int, palabra, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:16.