[C con Clase] ayuda

Steven Davidson steven en conclase.net
Jue Mar 15 04:11:15 CET 2007


Hola David,

El pasado 2007-03-15 00:49:37, pipe bmx escribió:

pb> *tebgo un problema con el programa que se presenta a continuacion y no se
pb> porque es he revisado la sintaxis y si es un errror de librerias pero no he
pb> dado con nada . utilizo dev c y el erro que me muestra al compilar es el
pb> siguiente :*
pb> *15  ambiguous overload for `std::istream& >> const char[3]' operator*
pb> *y el codigo es el siguiente*
pb> *:*
pb> *#include <iostream>
pb> #include <stdlib.h>
pb> #include <stdio.h>
pb> #include <conio.h>*
pb> *using namespace std;*
pb> *main()
pb> {
pb>  int num1,menor,num2;
pb>  cout<<"\n Escriba el primer numero a evaluar y pulse enter \n";
pb>  cin>>"%d",&num1;
pb>  cout<<"\n Escriba el segundo numero a evaluar y pulse enter \n";
pb>  cin>>"%d",&num2;
pb>  if(num1<num2){menor=num1;}
pb>  else if(num1>num2){menor=num2;}
pb>  else{menor=0;}
pb>  cout<<"\n el menor entre %d y %d es %d \n",num1,num2,menor;
pb>   getch();
pb> }*

Siento decir que estás mezclando la manera de hacer E/S con 'printf()' y 'scanf()' con la manera de 'cout <<' y 'cin >>'. Escribes:

cin >> "%d", &num1;

Cuando deberías escribir:

cin >> num1;

O si usas ANSI C, entonces,

scanf( "%d", &num1 );

Lo mismo ocurre con las demás sentencias. Por ejemplo, escribes:

cout << "\n el menor entre %d y %d es %d \n", num1, num2, menor;

O bien usas 'printf()' o bien 'cout >>', pero no ambas conjuntamente. La solución sería:

cout << "\n el menor entre " << num1 << " y " << num2 << " es " << menor << " \n";

Usando 'printf()', obtendremos:

printf( "\n el menor entre %d y %d es %d \n", num1, num2, menor );


Revisa el tutorial al final de nuestro curso de C++. Puedes ir directamente a: http://c.conclase.net/curso/index.php?cap=800 e incluso el apéndice C: http://c.conclase.net/curso/index.php?cap=902


Espero haber aclarado la duda.

Steven


Más información sobre la lista de distribución Cconclase