Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - bigfu

#11
Las comillas ' ' se usan para un solo caracter. Debes usar " " para cadena de caracteres.
Si quieres puedes ahorrarte el segundo if, puedes poner directamente else y la sentencia cout

EDIT: No lo había visto antes. Para comparar una cadena de caracteres, debes de ir caracter a caracter, no puedes compararlas "del tirón" (a no ser que sea de tipo string). Puedes, por ejemplo, hacer una función de tipo booleano que vaya comparando carácter a carácter las dos palabras.
#12
Si lo que quieres es saber el número de dígitos que tiene un número cualquiera, lo único que tienes que hacer es ir dividiendo por 10 y contar las divisiones hasta que el cociente de 0.

Ejemplo: Num = 121, contador = 0

121/10 = 12 --> contador = 1
12/10 = 1 --> contador = 2
1/10 = 0 --> contador = 3
y ahi finaliza el bucle
#13
Cita de: ;c1v!c en 16 Agosto 2011, 18:08 PM
no entendi mucho nose C++ jeje
q es cout en C scanf?

Lo siento, me he liado xD cout es lo mismo que printf, pero viene incluida en una librería de C++.
He estado mirando un poco como hacerlo en C y no se pueden pasar valores por referencia. Asi que antes de liarte más, a ver si tienes suerte y te ayuda alguien que programa en C.

Suerte!
#14
Cita de: ;c1v!c en 16 Agosto 2011, 17:23 PM
y como hago para q me aparezca el "desc" y el "subtotal" del void hay en el print donde falta.

O declaras esas variables en el subalgoritmo y haces el cout interno al subalgoritmo o en el prototipo declaras los parámetros como entrada/salida.
#15
El problema es que void no devuelve ningun valor, tienes que sacarlo del printf.
#16
Cita de: PiroskY en 15 Agosto 2011, 16:21 PM
No se puede usar archivos?

No, eso se da en otra asignatura.
#17
Ya están colgadas todas las soluciones del tema 3.

Os querría pedir un favor, a ver si podéis echarle un vistazo a este código y decidme si está bien o mal o cómo podría hacerlo mejor. Es que este tipo de ejercicios (algo más complejo, claro está) es uno de los que suelen caer en el examen y siempre he tenido "problemas" con ellos. Para ver si más o menos le voy cogiendo el hilo...

CitarUna farmacia desea almacenar sus productos (TProducto) en una estructura. De cada producto hay que almacenar la siguiente información: código (unsigned), nombre (string), precio (float), fecha de caducidad (definir un tipo de registro para la fecha). Diseña la estructura de datos (TFarmacia) para almacenar un máximo de MAX (una constante) productos y realiza los siguientes subalgoritmos: (son los subprogramas que he puesto más abajo).
Código (cpp) [Seleccionar]
#include <iostream>
#include<string>
using namespace std;

const unsigned MAX = 50;
struct TFecha{
   unsigned dia,mes,anyo;
};
struct TProducto{
   unsigned codigo;
   string nombre;
   float precio;
   TFecha fecha_cad;
};
typedef TProducto TMedicamentos[MAX];
struct TFarmacia{
   TMedicamentos med;
   unsigned num;
};

void LeerProducto(TProducto& p){
   cout << "Introduzca codigo: ";
   cin >> p.codigo;
   cout << "Introduzca nombre: ";
   getline(cin,p.nombre);
   cout << "Introduzca precio: ";
   cin >> p.precio;
   cout << "FECHA: " << endl;
   cout << "Introduzca dia: ";
   do{
      cin >> p.fecha_cad.dia;
   }while((p.fecha_cad.dia<1)||(p.fecha_cad.dia>31));
   cout << "Introduzca mes: ";
   do{
      cin >> p.fecha_cad.mes;
   }while((p.fecha_cad.mes<1)||(p.fecha_cad.mes>12));
   cout << "Introduzca año: ";
   cin >> anyo;
}

void EscribirProducto(const TProducto& p){
   cout << "Codigo: " << p.codigo << endl;
   cout << "Nombre: " << p.nombre << endl;
   cout << "Precios: " << p.precio << endl;
   cout << "Fecha: " << p.fecha_cad.dia << "/" << p.fecha_cad.mes << "/" << p.fecha_cad.anyo << endl;
}

void inicializarFarmacia(TFarmacia& f){
   f.num = 0;
}

void insertarProducto(TFarmacia& f, const TProducto& p){
   f.med[f.num] = p;
   f.num++;
}

void BorrarProducto(TFarmacia& f, unsigned codigo){
   bool esta = false;
   unsigned i;
   for(i=0;i<f.num;i++){
      if(f.med[i].codigo == codigo){
         esta = true;
         break;
      }
   }
   if(esta){
      f.med[i] = f.med[f.num-1];
      f.num--;
   }else{
      cout << "No esta" << endl;
   }
}

void BuscarProductoCodigo(const TFarmacia& f, unsigned codigo, bool& encontrado, TProducto& p){
   encontrado = false;

   for(unsigned i=0;i<f.num;i++){
      if(f.med[i].codigo == codigo){
         p = f.med[i];
         encontrado = true;
         break;
      }
   }
}

void BuscarProductoNombre(const TFarmacia& f, const string& nombre, bool& encontrado, TProducto& p){
   encontrado = false;

   for(unsigned i=0;i<f.num;i++){
      if(f.med[i].nombre == nombre){
         p = f.med[i];
         encontrado = true;
         break;
      }
   }
}

void ListarFarmacia(const TFarmacia& f){
   for(unsigned i=0;i<f.num;i++){
      EscribirProducto(f.med[i]);
      cout << endl;
   }
}


Gracias!!
#18
Pon system("PAUSE") justo encima del return 0, a ver si va a ser por eso xD
#19
Sin profundizar mucho en el codigo, a primera vista veo que tienes variables sin utilizar, aunque eso no influye en el funcionamiento del programa, te recomiendo que las borres si no las usas (base, d).
Luego, veo que en la sentencia c = sqrt((a^2)+(l^2)), utilizas ^para elevar al cuadrado. No se hace asi, o utilizas una funcion de la biblioteca math.h (que supongo que tendra una funcion para calcular los cuadrados) o simplemente lo cambias por a*a y l*l.

Saludos.
#20
Cita de: Kherom en 11 Agosto 2011, 18:04 PM
Probablemente sea eso, aunque de todas formas en el ejercicio decía de hacer un bucle, habría que añadir un while. Uso el Visual C++ 2010 Express.

Tanto la estructura while como la do-while son iterativas (bucles), al igual que la estructura for. Asi que puedes hacerlas con la estructura que prefieras, aunque la estructura for se usa más en los casos en los que conoces el número de iteraciones, pero creo que la puedes "transformar" y usarlas como las otras dos.