Error raro en la compilación de este sencillo código.

Iniciado por OmarHack, 7 Junio 2013, 17:25 PM

0 Miembros y 2 Visitantes están viendo este tema.

OmarHack

Gracias, me solucionasteis un problema del copón!!! :)
I like to test things.

OmarHack

#11
Fallo.cpp `string' does not name a type
¿Cual es el problema? ¿Tengo que instalar la librería? ¿No la traen ya codeblocks o devcpp?
El include está echo y lo he probado tanto con #include <string.h> como con <string> como con <cstring> y nada.

PD: Solucionado y no sé ni que pasaba  :xD.
Si acabo el programa lo postearé aquí y espero que os guste. Es para el concurso de programación del foro! 
I like to test things.

amchacon

Cita de: OmarHack en  7 Junio 2013, 22:51 PM¿Cual es el problema? ¿Tengo que instalar la librería?
String forma parte de la librería estándar del lenguaje. Todo compilador debe tenerla instalada.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

rir3760

Cita de: OmarHack en  7 Junio 2013, 22:51 PM
Fallo.cpp `string' does not name a type
¿Cual es el problema? ¿Tengo que instalar la librería? ¿No la traen ya codeblocks o devcpp?
El include está echo y lo he probado tanto con #include <string.h> como con <string> como con <cstring> y nada.
Debes incluir el encabezado <string> y referirte a la clase como "std::string" ya que se encuentra en el espacio de nombres estándar.

Para utilizar solo "string" debes primero utilizar la sentencia "using std::string;" o bien "using namespace::std;".

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

flony

una posible solucion seria
#include<iostream>
#include<string>
using namespace std;

int main()
{
string palabra;
string palabra2;
palabra2="qw";
cout<<"introduce una palabra";
getline(cin, palabra);
if (palabra ==palabra2)
{
cout<<"hola mundo";
}
else
{
cout<<"casi";
}
system("PAUSE");
return 0;
}
si un problema no tiene solucion entonces no es un problema...es algo inevitable

OmarHack

Ahora va perfecto, ya acabé el programa, ahora a meterle funcionalidades y portarlo a otras plataformas! Muchas gracias a todos! :silbar: Fijo que a muchos va a encantar. ;)
I like to test things.

leosansan

#16
¿Y sin string, o sea programando nosotros lo que en el fondo hace string?:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
int main() {
char palabra[20]={0},palabra2[]="qw";
cout << "introduce letras: ";
cin >> palabra;
int i;
for (i=0;palabra[i]!='\0';i++)
   if (palabra[i]==palabra2[i])
       continue;
if (i==2)
   cout <<"Hola mundo";
cin.get();
return 0;}


Saluditos desde Gran Canaria! .... ..

rir3760

En el bucle:
Código (cpp) [Seleccionar]
for (i=0;palabra[i]!='\0';i++)
   if (palabra[i]==palabra2[i])
      continue;

El condicional no tiene efecto.

Debería ser:
Código (cpp) [Seleccionar]
for (i = 0; palabra[i] != '\0'; i++)
   if (palabra[i] != palabra2[i])
      break;

O:
Código (cpp) [Seleccionar]
for (i = 0; palabra[i] != '\0' && palabra[i] == palabra2[i]; i++)
   ;


Así al terminar el bucle basta con comparar los últimos caracteres para saber si las cadenas son iguales.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

flony

no opine porque me gustaba el tema de inventar la rueda de nuevo :) (frase sacada de aprendiendo c++de deitel)
lo unico para objetar si pone una palabra mayor o igual a 20 que pasaria
si un problema no tiene solucion entonces no es un problema...es algo inevitable

leosansan

#19
Cita de: rir3760 en  9 Junio 2013, 08:53 AM
En el bucle:
Código (cpp) [Seleccionar]
for (i=0;palabra[i]!='\0';i++)
  if (palabra[i]==palabra2[i])
     continue;

El condicional no tiene efecto.

tiene efecto, combinado con la línea que le sigue. Fíjate bien en el if con la i, y si no pruébalo Otra cosa es que pierda eficiencia al comparar más allá del número de caracteres de palabra2. Sin dudarlo un instante me quedo con:

Citar

Código (cpp) [Seleccionar]
for (i = 0; palabra[i] != '\0' && palabra[i] == palabra2[i]; i++)
  ;



Saluditos! .... ..