Son dos problemas en uno, meti todos los problemas en el mismo archivo. El primer main corresponde al problema 1 y el otro main a los problemas 2,3,4 y 5 que van conjuntos :)<div><br></div><div>Un saludo ^^ <br><div><br><div class="gmail_quote">
El 20 de abril de 2012 20:02, Santiago Tabarez <span dir="ltr"><<a href="mailto:santiago230792@gmail.com">santiago230792@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
¿no escribiste el cuerpo de la funcion main 2 veces? me parece que la<br>
redefiniste<br>
<br>
/*Escribir un programa que almacene en un array los nombres y números<br>
de teléfono de 10 personas.<br>
El programa debe leer los datos introducidos por el usuario y<br>
guardarlos en memoria (en el array).<br>
Después debe ser capaz de buscar el nombre correspondiente a un número<br>
de teléfono y el teléfono<br>
correspondiente a una persona. Ambas opciones deben se accesibles a<br>
través de un menú, así como<br>
la opción de salir del programa. El menú debe tener esta forma, más o menos:<br>
a) Buscar por nombre<br>
b) Buscar por número de teléfono<br>
c) Salir<br>
<br>
Pulsa una opción: */<br>
<br>
#include <iostream><br>
#include "string.h" // El compilador de Code::Blocks no ve <string> nu<br>
se porque.<br>
using namespace std;<br>
<br>
struct datos<br>
{<br>
        char Nombre[200];<br>
        int Telefono;<br>
} Datos[11]; // 10 personas + 1 (nulo)<br>
<br>
int main()<br>
{<br>
        int x = 0;<br>
        while(x < 10)<br>
        {<br>
                cout << "Ingrese el nombre:" << endl;<br>
                cin >> Datos[x].Nombre;<br>
                cout << "Ingrese el numero de telefono:" << endl;<br>
                cin >> Datos[x].Telefono;<br>
                x++;<br>
        }<br>
<br>
        int action;<br>
<br>
        cout << "Menu Principal:" << endl << endl;<br>
        cout << " 1- Buscar por nombre:" << endl;<br>
        cout << " 2- Buscar por telefono:" << endl;<br>
        cout << " 3- Salir del programa" << endl;<br>
        cin >> action;<br>
<br>
        bool encontrado = false;<br>
        switch(action)<br>
        {<br>
        case 1: // Busqueda por nombre<br>
                char nombre[200];<br>
                cout << "Introduce el nombre:" << endl;<br>
                cin >> nombre;<br>
                for(int x = 0; x < 10; x++)<br>
                {<br>
                        if (strcmp(Datos[x].Nombre, nombre) == 0)// No hemos dado lo que se<br>
tenia que hacer aqui realmente<br>
                        {<br>
                                cout << "Existe el nombre" << endl;<br>
                                cout << "El telefono de la persona es:" << Datos[x].Telefono << endl;<br>
                                encontrado = true;<br>
                        }<br>
                }<br>
                if(!encontrado)<br>
                {<br>
                        cout << "No existe ese nombre en la estructura" << endl;<br>
                        return 0; // fin del programa<br>
                }<br>
                break;<br>
        case 2: // Busqueda por telefono<br>
                int tel;<br>
                cout << "Introduce el telefono:" << endl;<br>
                cin >> tel;<br>
<br>
                for(int x = 0; x < 10; x++)<br>
                {<br>
                        if(Datos[x].Telefono == tel)<br>
                        {<br>
                                cout << "Existe el telefono" << endl;<br>
                                cout << "El poseedor de ese telefono es:" << Datos[x].Nombre << endl;<br>
                                encontrado = true;<br>
                        }<br>
                }<br>
<br>
                if(!encontrado)<br>
                {<br>
                        cout << "No existe ese telefono en nuestra base de datos" << endl;<br>
                        return 0; // fin del programa<br>
                }<br>
                break;<br>
        case 3: // Salir<br>
                return 0;<br>
        }<br>
<br>
        return 0;<br>
}<br>
<br>
<br>
/*Para almacenar fechas podemos crear una estructura con tres campos:<br>
ano, mes y dia.<br>
Los días pueden tomar valores entre 1 y 31, los meses entre 1 y 12 y<br>
los años, dependiendo de la aplicación,<br>
pueden requerir distintos rangos de valores. Para este ejemplo<br>
consideraremos suficientes 128 años, entre 1960<br>
y 2087. En ese caso el año se obtiene sumando 1960 al valor de ano. El<br>
año 2003 se almacena como 43.<br>
Usando estructuras, y ajustando los tipos de los campos, necesitamos<br>
un char para dia, un char para mes y otro para ano.<br>
Diseñar una estructura análoga, llamada fecha, pero usando campos de<br>
bits. Usar sólo un entero corto sin signo<br>
(unsigned short), es decir, un entero de 16 bits. Los nombres de los<br>
campos serán: dia, mes y anno.<br>
Basándose en la estructura de bits del ejercicio anterior, escribir<br>
una función para mostrar fechas: void Mostrar(fecha);.<br>
El formato debe ser: "dd de mmmmmm de aaaa", donde dd es el día,<br>
mmmmmm el mes con letras, y aaaa el año. Usar un array<br>
para almacenar los nombres de los meses.<br>
Basandose en la estructura de bits del ejercicio anterior, escribir<br>
una función bool ValidarFecha(fecha);, que verifique<br>
si la fecha entregada como parametro es válida. El mes tiene que estar<br>
en el rango de 1 a 12, dependiendo del mes y del año,<br>
el dia debe estar entre 1 y 28, 29, 30 ó 31. El año siempre será<br>
valido, ya que debe estar en el rango de 0 a 127.<br>
Para validar los días usaremos un array int DiasMes[] = {31, 28, 31,<br>
30, 31, 30, 31, 31, 30, 31, 30, 31};. Para el caso de<br>
que el mes sea febrero, crearemos otra función para calcular si un año<br>
es o no bisiesto: bool Bisiesto(int); Los años bisiestos<br>
son los divisibles entre 4, al menos en el rango de 1960 a 2087 se cumple.<br>
Seguimos con el tema de las fechas. Ahora escribir dos funciones más.<br>
La primera debe responder a este prototipo:<br>
int CompararFechas(fecha, fecha);. Debe comparar las dos fechas<br>
suministradas y devolver 1 si la primera es mayor,<br>
-1 si la segunda es mayor y 0 si son iguales.<br>
La otra función responderá a este prototipo: int Diferencia(fecha,<br>
fecha);, y debe devolver la diferencia en días entre las<br>
dos fechas suministradas.<br>
*/<br>
<br>
#include <iostream><br>
#include "string.h"<br>
using namespace std;<br>
<br>
struct fecha<br>
{<br>
        unsigned short int dia:5;<br>
        unsigned short int mes:4;<br>
        unsigned short int anno:7;<br>
} fechas[2];<br>
char meses[12][11] = {"Enero", "Febrero", "Marzo", "Abril", "Mayo",<br>
"Junio", "Julio", "Agosto",<br>
        "Septiembre", "Octubre", "Noviembre", "Diciembre"};<br>
int DiasMes[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};<br>
<br>
void Mostrar(fecha);<br>
bool ValidarFecha(fecha);<br>
bool Bisiesto(int anno);<br>
int CompararFechas(fecha, fecha);<br>
int Diferencia(fecha, fecha);<br>
int Suma(fecha);<br>
<br>
int main() // La pongo porque si, ya que no lo pide en el problema<br>
{<br>
        int aux;<br>
<br>
        for(int i = 0; i < 2; i++) // 2 fechas a comparar<br>
        {<br>
                cout << "Introduce el dia de la primera fecha" << endl;<br>
                cin >> aux;<br>
                fechas[i].dia = aux;<br>
                cout << "Introduce el mes de la primera fecha" << endl;<br>
                cin >> aux;<br>
                fechas[i].mes = aux;<br>
                cout << "Introduce el anno de la primera fecha" << endl;<br>
                cin >> aux;<br>
                fechas[i].anno = (aux - 1960);<br>
<br>
                if(ValidarFecha(fechas[i]))<br>
                        cout << "Fecha correcta" << endl;<br>
                else<br>
                {<br>
                        cout << "Fecha incorrecta" << endl;<br>
                        i--;<br>
                }<br>
        }<br>
        cout << "Comparando las dos fechas:" << endl;<br>
        int c = CompararFechas(fechas[0], fechas[1]);<br>
        if(c > 0)<br>
                cout << "La primera fecha es mayor" << endl;<br>
        else<br>
                if(c == 0)<br>
                        cout << "Las dos fechas son iguales" << endl;<br>
                else<br>
                        cout << "La segunda fecha es mayor" << endl;<br>
<br>
        cout << " Diferencia entre las dos fechas:" << Diferencia(fechas[0],<br>
fechas[1]) << endl;<br>
        cin.get();<br>
        return 0;<br>
}<br>
<br>
void Mostrar(fecha f)<br>
{<br>
        cout << "El dia seleccionado es:" << f.dia << "de" << meses[f.mes -<br>
1] << "de" << f.anno + 1960 << endl;<br>
}<br>
<br>
bool ValidarFecha(fecha f)<br>
{<br>
        if(f.dia > DiasMes[f.mes-1] || f.dia == 0 || f.mes > 12 || f.mes == 0<br>
|| (f.anno + 1960) < 1960)<br>
                return false;<br>
        return true;<br>
}<br>
<br>
bool Bisiesto(int Anno)<br>
{   // No entendi muy bien a que se referia en la nota.<br>
        if(Anno % 4 == 0 && Anno % 100 != 0)<br>
                return true;<br>
        return false;<br>
}<br>
<br>
int CompararFechas(fecha f1, fecha f2)<br>
{<br>
        int diasF1, diasF2;<br>
<br>
        if(ValidarFecha(f1) && ValidarFecha(f2)) // Primero comprobamos si son validas<br>
        {<br>
                diasF1 = Suma(f1);<br>
                diasF2 = Suma(f2);<br>
<br>
                // Ahora comparamos<br>
                if(diasF1 > diasF2)<br>
                        return 1;<br>
                else if(diasF1 < diasF2)<br>
                        return -1;<br>
                else // Si no es ni mayor ni menor, seran iguales.<br>
                        return 0;<br>
        }<br>
        else<br>
                cout << " Las fechas a comparar son invalidas" << endl;<br>
<br>
}<br>
<br>
int Suma(fecha f)<br>
{<br>
        int diasF = 0;<br>
        for(int i = 1; i < f.anno; i++) // Hay anno 0?<br>
        {<br>
                if(Bisiesto(i + 1960))<br>
                        diasF += 365;<br>
                else<br>
                        diasF += 364;<br>
        }<br>
        for(int i = 1; i < f.mes; i++)<br>
                diasF += DiasMes[f.mes - 1];<br>
        diasF += f.dia;<br>
<br>
        return diasF;<br>
}<br>
int Diferencia(fecha f1, fecha f2)<br>
{<br>
        int diasF1, diasF2;<br>
<br>
        if(ValidarFecha(f1) && ValidarFecha(f2)) // Primero comprobamos si son validas<br>
        {<br>
                diasF1 = Suma(f1);<br>
                diasF2 = Suma(f2);<br>
            diasF1 -= diasF2;<br>
                return diasF1;<br>
        }<br>
        else<br>
                cout << "Las fechas a comparar son invalidas" << endl;<br>
}<br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br></div></div>