elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio mill๓n USD en premios


  Mostrar Temas
Páginas: [1]
1  Programaci๓n / Programaci๓n C/C++ / Problema con un ejercicio en: 10 Julio 2013, 14:12 pm
Buenos dias gente! Estoy tratando de determinar un problema que tengo puntualmente con el punto B, A continuaci๓n dejo mi c๓digo

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

2  Programaci๓n / Programaci๓n C/C++ / Ayuda con ejercicio a entregar en c++ en: 9 Julio 2013, 15:53 pm
Buenos dias gente, mi intenci๓n no es que resuelvan mi ejercicio ya que no tendrํa sentido ni molestarlos, tan solo les pido un punto de partida para agarrar viaje, se los agradeceria muchisimo. Tengo que hacer un programa que pida nombre de usuario y contrase๑a y si lo pongo mal 3 veces que salga, si no que me mande a un menu desde donde maneje el resto del ejercicio (Esto ya lo tengo realizado) Estoy teniendo serios problemas en la carga de datos, no se como encararlo, estoy mareado entre matrices y vectores :( y me frustra
Dice lo siguiente:

Una univdad desea analizar los sueldos abonados a sus 60 docentes, para ello sabe:
Lote 1:-Legajo del docente
-Mes
-Categoria
-Cantidad de Hs Trabajadas



Lote 2: El valor de cada categoria y su descripcion se deberan cargar en memoria y son 3, titular, asociado, y adjunto (Esto no entiendo, por que yo lo que pense fue VectorCat[3]=Descripcion, pero como hago eso en c? :S me dice que es imposible convertir un int en char, y es logico, por que char es la descripcion e int la categoria.

Se desea saber:

Sueldo anual de cada profesor
total de sueldos pagados por cada mes
Para cada profesor cantidad de sueldos mayores a su sueldo promedio
Imprimir ordenado por sueldo anual de menor a mayor:
1-Sueldo anual
2-Legajo del PRofe
3-Sueldo Promedio
4-Porcentaje

Ademas que tampoco me dan un valor de la hora como para sacar el sueldo, pero eso se lo voy a inventar yo.

Si pudieran darme un punto de partida, lo agradeceria enormemente y disculpen las molestias
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines