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 - MAFUS

#1141
Sería más fácil, y fácil de entender a la primera, modificando num después de cada paso.

// ...
c100 = num / 100;
num -= c100 * 100;
c50 = num / 50;
num -= c50 * 50;
// ...
#1142
Supongo yo que espera a que el programa sea algo parecido a esto:

Ingresen total de lapices : 275
Cajas de 100u : 2
Cajas de  50u : 1
Cajas de  10u : 2
Bolsas individuales : 5
#1143
Es medio centenar, o sea, cajas de 50.  :-X
#1144
He dado formato a tu código como he podido. Es buena idea mantener el formato de las sangrías y todo eso.
Por otra parte, has abusado de las llaves. Hay tantas que has perdido la noción de qué es lo que encierran: hay do-whiles sin do, case con breaks y que continuan (un case no hace falta esté encerrado entre llaves).
Tienes gotos que te saltan entre cases de otros switch, creo... (me he perdido entre tanta llave).
En vez de anidar tantos switch deberías pensar en separar el programa en funciones.

Aquí dejo el código con un intento de reformateo:
Código (cpp) [Seleccionar]

#include <iostream>
#include <string>
#include <cstdlib>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <fstream>
#define USER "admin"
#define PASS "pavisb6"
#define ENTER 13
#define BACKSPACE 8
FILE *archivo;

using namespace std;

int main(void) {
    system("color 0B");
    string usuario, password;
    int contador = 0;
    bool ingresa = false;

    do {
        system("cls");
        cout << "\t\t\tCyber Card" << endl;
        cout << "\n\tUsuario: ";
        getline(cin, usuario);
        cout << "\tPassword: ";
        char caracter;
        caracter = getch();
        password = "";
        while (caracter != ENTER) {
            if (caracter != BACKSPACE) {
                password.push_back(caracter);
                cout << "*";
}
            else {
                if (password.length() > 0) {
                cout << "\b \b";
                password = password.substr(0, password.length() - 1);
                }
}
caracter = getch();
        }
        if (usuario == USER && password == PASS) {
            ingresa = true;
        }
        else {
            cout << "\n\n\tEl usuario y/o clave de acceso son incorrectos" << endl;
            cin.get();
            contador++;
        }
    } while (ingresa == false && contador < 3);
   
    if (ingresa == false) {
        cout << "\n\tUsted no pudo ingresar al sistema. ADIOS" << endl;
        return 0;
    }
    else {
        cout << "\n\n\tBienvenido al sistema" << endl;
        system("PAUSE");
    }
    {
        system("cls");
        int opcion;
    }

    char decidir;
    int opcion;
    int opcion2;
    char regisc [20];
    char fechav [10];
    char tic [15];
    char pagop [10];
    char pregunta;
    char respuesta;
    bool regresar= false;
    char clientep [50];
    int opcion3;
    bool modificar=true;
    char codip [5];
    bool encontrado=true;
    char auxcodip [5];
    char auxnombre [30];
    char auxnumtarjeta;
    int opcion4;
    char consulta;

    do {
        Menu3:
        system("cls");
        cout << "Menu principal" << endl << "-----------------------" << endl;
        cout << "[1] Registrar pago con tarjeta y numero de tarjeta" << endl;
        cout << "[2] Modificar regristro de pago y  numero de tarjeta" << endl;
        cout << "[3] Consultar registro de pagos y tarjeta" << endl;
        cout << "[4] Eliminar pago con tarjeta" << endl;
        cout << "[5] salir" << endl;
        cout << "-------------------------" << endl<< endl;
        cout << "Seleccione una opcion: ";
        cin >> opcion;

        switch(opcion) {
            case 1:
                {
                    Menu1:
                    system ("title Registro");
                    system ("cls");
                    cout << "registros" <<endl << "____________________________________" <<endl;
                    cout << "[7] resgistrar pago y tarjeta" <<endl;
                    cout << "[8] menu principal" << endl << "_____________________________" <<endl;
                    cout << "Elige una opcion" <<endl;
                    cin >> opcion2;
                }
                switch(opcion2) {
                    case 7:
                    Menu2:
                        {
                            system ("title saber card");
                            system ("cls");
                            archivo = fopen ("registro.dat","a");
                            cout <<" escriba un codigo para el registro" <<endl;
                            cin.getline (codip, 5) >> codip;
                            fprintf(archivo, "%s\n", codip);
                            cout << "escribe el  numero de la tarjeta:" <<endl;
                            cin.getline (regisc, 25) >> regisc;
                            fprintf(archivo, "%s\n", regisc);
                            cout <<"escribe la fecha de pago:" <<endl;
                            cin.getline (fechav, 10) >> fechav;
                            fprintf(archivo, "%s\n", fechav);
                            cout << "escribe el tipo de tarjeta:"<< endl;
                            cin.getline (tic, 15) >> tic;
                            fprintf(archivo, "%s\n", tic);
                            cout<< "escribe el nombre del cliente" << endl;
                            cin.getline (clientep, 50) >> clientep;
                            fprintf (archivo, "%s\n", clientep);
                            cout << "escribe el monto a pagar del ariculo:" <<endl;
                            cin.getline (pagop, 25) >> pagop;
                            fprintf(archivo, "%s\n", pagop);
                            cout << "Desea agregar otro registro? (s/n)";
                            cin >> pregunta;
     
                            fclose(archivo);
                           
                            if (pregunta == 's' || pregunta == 'S') {
                                goto Menu2;
                            }
                            else {
                                cout<< "Desea realizar otra operacion? (s/n)" <<endl;
                                cin>> respuesta;
                               
                                if (respuesta == 's' || respuesta == 'S') {
                                    goto Menu1;
                                }
                                else {
                                    system ("cls");
                                    cout << "adios que vuelva pronto" <<endl;
                                    exit (0);
                                }
                                break;
                            }
                        case 8:
                            {
                                goto Menu3;
                            }
                    }
                }

                {
                    case 2:
                        {

                            Menu4:
                            system("title Modificar");
                            system("cls");

                            cout<<"Modificar"<<endl<<"------------------------"<<endl;
                            cout<<"[9]Modificar regristro de pago y/o numero de tarjeta"<<endl;
                            cout<<"[10]Menu principal" <<endl;
                            cout<<"Elige una opcion"<<endl;
                            cin>>opcion3;
                        }

                        {
                            switch(opcion3) {
                                case 9:
                                    system("cls");
                                    system("title modificar registro");

                                    ifstream lectura;
                                    ofstream aux;
                                    encontrado = false;
                                    lectura.open("registro.dat",ios::in);
                                    aux.open("aux.dat",ios::out);
                                   
                                    if(aux.is_open() && lectura.is_open()) {
                                        cout<< "ingresa la clave del registro que desea modificar";
                                        cin>>auxcodip;
                                        lectura>>codip;
                                       
                                        while(!lectura.eof()) {
                                            lectura>>regisc>>fechav>>tic>>clientep>>pagop;
                                           
                                            if(auxcodip == codip) {
                                                encontrado = true;
                                                cout<<"____________________________"<<endl;
                                                cout<<"codigo:"<<codip<<endl;
                                                cout<<"num.tarjeta:"<<regisc<<endl;
                                                cout<<"fecha:"<<fechav<<endl;
                                                cout<<"tipo de tarjeta:"<<tic<<endl;
                                                cout<<"nom. cliente:"<<clientep<<endl;
                                                cout<<"pago:"<<pagop<<endl;
                                                cout<<"____________________________"<<endl;
                                                cout<<"ingresa el nuevo nombre del cliente con codigo"<<codip;
                                                aux <<codip<<" "<<regisc<<" "<<fechav<<" "<< tic<<" "<< auxnombre <<" "<<pagop;
                                            }
                                            else {
                                                aux <<codip<<" "<<regisc<<" "<<fechav<<" "<<tic<<" "<<clientep<<" "<<pagop;
                                            }
                                            lectura>>codip;
                                        }
                                    }
                                    else {
                                        cout<<"no se a podido abrir el archivo o aun no ha sido creado"<<endl;
                                    }
               
                                    if(encontrado == true)
                                        cout<<"no se encontro ningun registro con esa clave"<<auxcodip<<endl;
                            }
                            while (opcion=false);
                        }

                        switch (opcion3) // falta {
                            case 10:
                                {
                                    goto Menu3;
                                }

                        } //?
                        break;
                        {

                        case 3:
                            {
                                system ("cls");
                                cout << "Consulta" <<endl<< "____________________________" << endl;
                                cout << "[12] Consultar datos de pago  y tarjeta"<< endl;
                                cout << "[13] Menu pricipal"<<endl;
                                cout << "__________________________" << endl;
                                cout << "Seleccione una opcion ";
                                cin>>opcion4;
                               
                                switch(opcion4); /* sobra el ; */ {
                                    case 12:
                                        Menu5:
                                            {
                                                case 6:
                                                    {
                                                        system ("cls");
                                                        archivo = fopen("registro.dat","r");
                                                        fscanf(archivo, "%s", regisc);
                                                       
                                                        while(!feof(archivo)) {
                                                        cout << regisc <<endl;
                                                        fscanf(archivo, "%s", regisc);
                                                        }
                                                        fclose(archivo);
                                                        cout<< "Desea Realizar otra operacion?s/n" <<endl;
                                                        cin>> respuesta;
                                                       
                                                        if (respuesta == 's' || respuesta == 'S') {
                                                            goto Menu3;
                                                        }
                                                        else {
                                                            system ("cls");
                                                            cout << "Adios, nos vemos luego" <<endl;
                                                            return 0;
                                                        }
                                                    }
                                                case 13:
                                                    {
                                                        goto Menu3;
                                                    }

                                            }
                                }
                            }
                        } while(consulta = true);
                        break;
                        case 4:
                            system("cls");
                            ifstream salida;
                            salida.open("registro.dat",ios::in);
                            ofstream entrada;
                            entrada.open("temp.dat",ios::out);

                            if(salida.fail()) {
                                cout<<"hubo un error al abrir el archivo registro.dat";
                                getch();
                            }
                            else {
                                cout<<"Introduzca el codigo de registro";
                                cin>>auxcodip;
                                salida>>codip;
                               
                                while(!salida.eof()) {
                                    salida>>regisc>>fechav>>tic>>clientep>>pagop;

                                    if(strcmp(auxcodip,codip) == 0) {
                                        cout<<"el registro se ha eliminado";
                                        getch();
                                    }
                                    else {
                                        entrada<<codip<<" "<<regisc<<" "<<fechav<<" "<<tic<<" "<<clientep<<" "<<pagop<<endl;
                                    }
                                    salida>>codip;
                                }
                                entrada.close();
                                salida.close();
                                remove("registro.dat");
                                rename("temp.dat","registro.dat");
                            }

                            break;

                            while (opcion = true);
        }

    } while(opcion=true);
    {}
}
#1145
Realmente, cuándo te dicen que un puntero se pasa por valor te quieren decir esto:

#include <stdio.h>

void f(int *p) {
    printf("La dirección de p en f()    : %p\n", p);
}

int main()
{
    int a;
    int *p = &a;   
   
    printf("La dirección de p en main() : %p\n", p);
    f(p);
   
    return 0;
}
#1146
En vez de usar números mágicos utiliza directamente los caracteres entre comillas simples.
Por otra parte, en vez de intentar ir a atrás insertando el carácter de control '\b' directamente atrasa una posición el puntero del archivo.

Con todo esto el código queda como sigue:

if (c==',') {
    fseek(archivo, -1, SEEK_CUR);
    fputc('.',archivo);
}
#1147
Con memset de string.h
#1148
Modificando solo un poco la función anterior para que, en vez de pararse en cuando encuentre un cliente, actualice un contador que vaya desde 0 para arriba y la función devuelva el valor de dicho contador. Así deberías llamar a esta función por cada cliente que tuviera el taller. Después ya si encuentras un cliente con 5 coches ya haces el trabajo.
#1149
Debes tener en cuenta dos casos diferentes. Cuándo estés al principio de tu marquesina y cuándo te encuentres en el final.
Como sabrás cuándo le des una cadena a printf, éste se pone a escribir lo que le des hasta que encuentre un carácter de fin de cadena '\0', así si tienes la cadena ABCDEF
printf("%s", cadena+0);
obtienes ABCDEF
en cambio, si escribes
printf("%s", cadena+3);
obtienes DEF. Recuerda que cadena es un puntero y puedes usar la aritmética de punteros.
Esto te sirve para el inicio de la marquesina.

Ahora para el final de la marquesina printf tiene unos especificadores de formato que te pueden ser útiles, como el de precisión, que no solo funcionan con los números.
Si tienes la anterior cadena ABCDEF y te interesa solo coger los tres primeros caracteres puedes usar
printf("%.3s", cadena);
y obtienes ABC
Ese 3 es literal y no hay forma de cambiarlo a no ser que cambies la cadena de formato. Pero los diseñadores de printf, que son muy listos, han hecho posible que nosotros, los pobres usuarios, tengamos una forma de escribir cuántos caracteres queremos. Mediante el carácter * podemos usar un argumento de printf para dar un tamaño.
Si escribimos printf así
printf("%.*s", tam, cadena);
Si tam=3 entonces obtenemos CAD.

#1150
¿Y tu orden de compilación es?