Código:
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define CE 3+1
#define CM 12+1
#define CL 12+1
void inicio(char[][CL],int[]);
void proceso(int[],float[],float[],float[][CE],float*);
void Asterico(char);
void ordenar(int[],char[][CL],float[]);
void puntoa(int[],char[][CL],float[]);
void puntob(float []);
void puntod(float[][CE],char vnom[][CL]);
int UsuContra();
int Menu();
int main () {
UsuContra();
Menu();
}
void Asterisco(char asterisco[])
{
int i=0;
fflush(stdin);
do
{
asterisco[i] = (unsigned char)getch();
if(asterisco[i]!=8)
{
printf("*");
i++;
}
else if(i>0)
{
printf("%s, %s, %s", (char) 8, (char) 32, (char) 8);
i--;
}
fflush(stdin);
}while(asterisco[i-1]!=13);
asterisco[i-1] = 0;
}
int UsuContra() {
const char USUARIO[] ="123";
const char PASSWORD[] ="123";
const int intentos =3;
int i,j=3;
char usuario[100];
char clave[100];
for (i=0;i<intentos;i++) {
j--;
printf("Introduzca nombre de usuario\n");
scanf("%s", &usuario);
if (strcmp(USUARIO, usuario) != 0) {
printf("\tSu nombre de usuario es incorrecto. Intentos restantes %d\n", j );
continue;
}
printf("Ingrese su clave por favor");
Asterisco(clave);
if (strcmp(PASSWORD, clave) != 0) {
printf("\tSu clave es invalida. Intentos restantes %d\n", j);
continue;
}
printf("\t== Usuario y clave correctos, accediento al programa ==\n");
break;
}
if (i==intentos){
printf("\nSupero el numero de intentos, el programa se cerrara\t");
system("pause");
exit(0);
}
}
void inicio(char vnom[][CL],int vle[])
{
int i;
printf("Bienvenido a la carga de datos. Se redujo de 60 docentes a 4 para que sea mas sencilla su evaluacion.\n" );
printf("Primero, ingrese el legajo y la categoria a donde pertenece cada docente.\n");
for(i=1;i<CE;i++)
{
printf("Ingrese legajo:\n");
fflush(stdin);
scanf("%d",&vle[i]);
printf("Ingrese categoria a donde pertenece\n:");fflush(stdin);gets(vnom[i]);
}
}
void proceso(int vleg[],float vsa[],float vsm[],float mme[][CE],float*total)
{
float vh = 0.0;
int mes = 0;
int leg = 0;
int ch = 0;
float s;
int i;
int vcmeses[12];
printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n");
printf("Procedamos al segundo lote de informacion.\n" );
printf("Teniendo en cuenta los docentes registrados en la base de datos.\n");
printf("ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹\n");
do {
printf("Ingrese Legajo:\n");
fflush(stdin);
scanf("%d",&leg);
}while(leg<=0);
while(leg != 0)
{
printf("Ingrese mes de registro:");
fflush(stdin);
scanf("%d",&mes);
printf("Ingrese la cantidad de horas trabajadas");
fflush(stdin);
scanf("%d",&ch);
printf("Ingrese valor de la hora");
fflush(stdin);
scanf("%f",&vh);
i=1;
while(i<CE&&leg!=vleg[i])i++;
if(i<=CE)
{
s=vh*ch;
vsa[i]+=s;
vsm[i]=vsm[i]+s;
mme[mes][i]+=s;
(*total)+=s;
}
if (i<CM){
vcmeses[i]+=s;
}
printf("Ingrese legajo o 0 para finalizar la carga");
fflush(stdin);
scanf("%d",&leg);
}
}
void puntoa(int vle[],char vnom[][CL],float vsa[])
{
int i;
system("cls");
printf("\nPUNTO A");
printf("\n=======\n");
for(i=1;i<CE;i++)printf("\t Legajo: %d, Categoria: %s, Sueldo anual del docente %5.2f\n",vle[i],vnom[i],vsa[i]);
getch();
}
void puntob(float vcmeses[]) {
int i;
system("cls");
printf("\nPUNTO B");
printf("\n=======\n");
for(i=1;i<CM;i++) printf("\t Numero del mes : %8d Cantidad de sueldo pagado %15.2f\n",i,vcmeses[i]);
getch();
}
void puntod(float mme[][CE],char vnom[][CL]) {
system("cls");
int pos,i,f,c;
float max;
printf("\nPUNTO D Maximo sueldo pagado cada mes.");
printf("\n=======\n");
for(f=1;f<CM;f++)
{
max = -999;
for(c=1;c<CE;c++)
if(mme[f][c] > max)
{
max = mme[f][c];
pos = c;
}
printf("\nMES:%8d Sueldo maximo pagado:%15.2fs y lo percibio un docente de la categoria numero %s\n",f,max,vnom[pos]);
}
}
int Menu () {
int vle [CE]={0};
char vnom[CE][CL];
float vsa [CE]={0.0};
float vsm [CM]={0.0};
float mme [CM][CE]={{0.0}};
float total = 0.0;
int opcion,validador=0;
do {
printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n");
printf("\t== Bienvenido al Menu del Programa ==\n");
printf("\t== Escoja la opcion deseada para continuar ==\n");
printf("\t== Primero es necesario que cargue los datos ==\n");
printf("\t0) Cargar datos\n");
printf("\t1) Punto A\n");
printf("\t2) Punto B\n");
printf("\t3) Punto D\n");
printf("\t3) Punto H\n");
printf("\t5) Salir del programa\n\n");
printf("ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹\n");
scanf("%d", &opcion);
switch (opcion) {
case 0:
validador=validador+1;
if(validador>=2){
system("cls");
printf("Datos ya cargados. No puede volver a realizar la operacion\n");
}
else {
printf("Accediendo a la carga de datos");
system("cls");
inicio(vnom,vle);
proceso(vle,vsa,vsm,mme,&total);
}
break;
case 1:
if(validador==0) {
system("cls");
printf("ERROR. Primero debe cargar los datos.\n");
}
else {
printf("\t == Calculando sueldo anual de cada profesor == \n");
puntoa(vle,vnom,vsa);
system("cls");
}
break;
case 2:
if(validador==0) {
system("cls");
printf("ERROR. Primero debe cargar los datos.\n");
}
else {
printf("\t == Calculando total de sueldos pagados por cada mes == \n");
puntob(vsm);
system("cls");
}
break;
case 3:
if(validador==0) {
system("cls");
printf("ERROR. Primero debe cargar los datos.\n");
}
else {
printf("\t == Calculando maximo sueldo pagado cada mes == \n");
puntod(mme,vnom);
}
break;
case 4:
if(validador==0) {
system("cls");
printf("ERROR. Primero debe cargar los datos.\n");
}
else {
printf("\t == Imprimiendo los datos solicitados ordenados de menor a mayor == \n");
}
break;
case 5:
printf("\t ==Saliendo del programa == \n");
exit(0);
default:
printf("\tLa opcion %d ingresada no es valida. Vuelva a intentarlo\n", opcion);
}
}while(opcion!=10);
Menu();
}
Les puntualizo las dos partes donde creo que esta el problema:
Código:
void puntob(float vcmeses[]) {
int i;
system("cls");
printf("\nPUNTO B");
printf("\n=======\n");
for(i=1;i<CM;i++) printf("\t Numero del mes : %8d Cantidad de sueldo pagado %15.2f\n",i,vcmeses[i]);
getch();
}
Código:
void proceso(int vleg[],float vsa[],float vsm[],float mme[][CE],float*total)
{
float vh = 0.0;
int mes = 0;
int leg = 0;
int ch = 0;
float s;
int i;
int vcmeses[12];
printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n");
printf("Procedamos al segundo lote de informacion.\n" );
printf("Teniendo en cuenta los docentes registrados en la base de datos.\n");
printf("ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹\n");
do {
printf("Ingrese Legajo:\n");
fflush(stdin);
scanf("%d",&leg);
}while(leg<=0);
while(leg != 0)
{
printf("Ingrese mes de registro:");
fflush(stdin);
scanf("%d",&mes);
printf("Ingrese la cantidad de horas trabajadas");
fflush(stdin);
scanf("%d",&ch);
printf("Ingrese valor de la hora");
fflush(stdin);
scanf("%f",&vh);
i=1;
while(i<CE&&leg!=vleg[i])i++;
if(i<=CE)
{
s=vh*ch;
vsa[i]+=s;
vsm[i]=vsm[i]+s;
mme[mes][i]+=s;
(*total)+=s;
}
if (i<CM){
vcmeses[i]+=s;
}
El problema que estoy teniendo es que por ejemplo yo pongo a un profesor en el mes 4, y sin embargo el programa a la hora de darme el resultado me lo da en el mes 3 como maximo, no me aparece el resto de los meses, agradeceria de todo corazon a quien pudiera ayudarme a encontrar la solucion, muchisimas gracias