¿No se porque no me anda el programa en c++?

Cuando lo ejecuto funciona la primera parte, pero en la parte que dice fin no se ejecuta, solo ingresa los datos pero no hace ninguna operación.

#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<stdlib.h>

int main(void) { float prom,por; float porr[80]={0}; int sdo[80][12]={0}; int sdoa[80]; int vn[6]={0},vsb[6]={0},vhe[6]={0},chet[80][12]={0},total[12]={0},max[12]={0},auxmax[12]={0},vleg[80],cheta[80]; int cat,desc,sb,he,mes,sdoi,I,J,a,b,c,min,rl,aux,sdot,auxmin,mindic,auxd,minchet,auxchet,print,leg,access; min=0; I=0; J=0; c=0; rl=0; aux=0; a=0; b=0; c=0; access=0;

system("cls");

do{ const char USUARIO[] ="usuario"; const char CONTRASENA[] ="contrasena"; const int numIntentos =5; int i; char usuario[100]; char contrasena[100]; for (i=0; i<numIntentos; i++) { printf("usuario: "); scanf("%s", usuario); if (strcmp(USUARIO, usuario) != 0) { printf("\tusuario no registrado\n"); continue; } printf("contrasena: "); scanf("%s", contrasena); if (strcmp(CONTRASENA, contrasena) != 0) { printf("\tcontrasena invalida\n"); continue; } printf("\n*** Bienvenido ***\n"); break; } if (i == numIntentos) { printf("\n Programa no ejecutado.\n"); return 1;

} printf("\n Programa ejecutando...\n"); } while(access!=0);

system ("pause"); system ("cls");

for (I = 1; I <= 6; I++) { printf ("Ingrese descripcion"); scanf ("%d", &desc); vn[I] = desc;

printf ("Ingrese sueldo basico"); scanf ("%d", &sb); vsb[I] = sb; printf ("Ingrese el valor de la hora extra", cat); scanf ("%d", &he); vhe[I] = he;

} system ("cls"); { int leg; printf("ingrese el numero de legajo"); scanf("%d",&leg); } system ("cls");

while(leg!=100) { printf ("Ingrese mes"); scanf ("%d", &mes); printf ("Ingrese saldo"); scanf ("%d", &sdoi); printf("ingrese cantidad de horas extras trabajadas"); scanf("%d", &cheta[leg]); sdo[leg][mes]=sdo[leg][mes]+sdoi; chet[leg][mes]=chet[leg][mes]+cheta[leg]; system ("cls"); while(leg!=100) { printf("ingrese el mes"); scanf("%d",&mes); printf("ingrese numero de categoria"); scanf("%d",&cat); printf("ingrese el numero de legajo"); scanf("%d",&leg); vleg[leg]=leg; sdo[leg][cat]=vsb[cat]+vhe[cat]*chet[leg][mes]; } system ("cls"); system ("pause");

//fin //punto A

for(I = 1; I <= 80; I++) { for(J=1;J<=80;J++) { sdoa[I]=sdoa[I]+sdo[I][J]; printf("el sueldo anual de cada empleado es de %d",sdoa,I); } system ("cls"); //punto B for(I=1;I<=12;I++) { for(J=1;J<=80;J++) { total[I]=total[I]+sdo[J][I]; printf("el total pagado por mes es de %d",total,I); }; } system ("cls"); //punto C for(I=1;I<=80;I++) { sdot=sdot+sdoa[I]; { prom=sdot/80; } } for(I=1;I<=80;I++) { if(sdoa[I]>sdot) { c=c+1; } printf("los sueldos que superan el promedio son %d",c); } system ("cls"); //punto D for(I=1;I<=12;I++) { { max[I]=sdo[1][1]; } for(I=1;I<=12;I++) { for(J=1;J<=80;J++) { if(sdo[J][I]>max[I]) { max[I]=sdo[J][I]; auxmax[I]=J; } for(I=1;I<=12;I++) { for(J=auxmax[I];J<=80;J++) { if(sdo[J][I]=max[I]) { printf("el sueldo maximo es de %d, pertenece a %d",sdo[J][I],J,I); } } } } } } system ("cls"); //punto E for(I=1;I<=80;I++) { { porr[I]=((sdoa[I]*100)/sdot); { for(I=1;I<=80;I++) { printf("el porcentaje de cada empleado es %d",porr[I]); } } } } system ("cls"); //punto F min=sdo[1][6]; for(I=6;I<=12;I++) { for(J=1;J<=80;J++) { if(sdo[J][I]<min) { min=sdo[J][I]; auxmin=I; } for(I=auxmin;I<=12;I++) { for(J=1;J<=80;J++) { if(sdo[J][I]=min) { printf("el empleado que cobro menos es %d",sdo[J][I],J); } } } } } system ("cls"); //puto G mindic=sdo[1][12]; for(I=2;I<=80;I++) { if(sdo[I][J]<mindic) { mindic=sdo[I][J]; auxd=I; } for(I=auxd;I<=80;I++) { if(sdo[I][12]=mindic) { printf("el empleado que cobro mas en diciembre es %d",sdo[I][12],I); } } }

system ("cls"); //punto H minchet=chet[1][1]; for(I=1;I<=3;I++) { for(J=1;J<=80;J++) { if(chet[J][I]<minchet) { minchet=chet[J][I]; auxchet=I; } for(I=auxchet;I<=3;I++) { for(J=1;J<=80;J++) { if(chet[J][I]=minchet) { printf("el empleado que trabajo menos en el primer trimestre es %d",chet[J][I],J); } } } } } system ("cls"); //punto I for(I=1;I<=79;I++) { for(J=I+1;J<=80;J++) { if(sdoa[J]>sdoa[I]) { a=sdoa[J]; sdoa[J]=sdoa[I]; sdoa[I]=a; b=vleg[J]; vleg[J]=vleg[I]; vleg[I]=b; c=cheta[J]; cheta[J]=cheta[I]; cheta[I]=c; } for(I=1;I<=80;I++) { printf("los sueldos anuales de los empleados son %d,\n",sdo[J],a); printf("numero de legajo %d,\n",vleg[J],b); printf("la cantidad de horas extras trabajadas por cada empleado son %d,\n",cheta[J],c); } } } system("pause"); return 0; } } }

1 respuesta

Respuesta
2

Te recomiendo que

if(leg != 100){
sdo[leg][mes]=sdo[leg][mes]+sdoi;
chet[leg][mes]=chet[leg][mes]+cheta[leg];
}
system ("cls");
while(leg!=100)
{
printf("ingrese el mes");
scanf("%d",&mes);
printf("ingrese numero de categoria");
scanf("%d",&cat);
printf("ingrese el numero de legajo");
scanf("%d",&leg);
if(leg != 100){
vleg[leg]=leg;
sdo[leg][cat]=vsb[cat]+vhe[cat]*chet[leg][mes];
}

tu arreglos están declarados con valor máximo 80 y tu salida el while es de 100 y dicho valor no existe en tu arreglo por eso el programa se cierra y te aconsejaría agregarle un contador porque existe la posibilidad que no utilices los 80 si no solo 20 de ellos y igual el programa reconoce los 80 como si los Hubieses ingresado....... si necesitas algo mas dime

Gracias, le pude arreglar eso pero ahora lo que me pasa es que las cuentas con máximos y mínimos no me las hace o no me aparece

Uno de los errores mas probables para que no te lo muestre es como te dije si no meter los 80 el programa puede no avanzar por otro lado si le hiciste algún cambio aparte del que yo hice necesitaría que me pasaras el código para volverlo a evaluar

#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<stdlib.h>


int main(void)
{
float prom,por;
float porr[80]={0};
int sdo[80][12]={0};
int sdoa[80];
int vn[6]={0},vsb[6]={0},vhe[6]={0},chet[80][12]={0},total[12]={0},max[12]={0},auxmax[12]={0},vleg[80],cheta[80];
int cat,desc,sb,he,mes,sdoi,I,J,a,b,c,min,rl,aux,sdot,auxmin,mindic,auxd,minchet,auxchet,print,leg,access,opc;
min=0;
I=0;
J=0;
c=0;
rl=0;
aux=0;
a=0;
b=0;
c=0;
access=0;
minchet=0;
mindic=0;
auxmin=0;
auxd=0;

system("cls");

do{
const char USUARIO[] ="usuario";
const char CONTRASENA[] ="contrasena";
const int numIntentos =5;
int i;
char usuario[100];
char contrasena[100];
for (i=0; i<numIntentos; i++)
{
printf("introdusca\n");
printf("usuario: ");
scanf("%s", usuario);
if (strcmp(USUARIO, usuario) != 0)
{
printf("\tusuario no registrado\n");
continue;
}
printf("contrasena: ");
scanf("%s", contrasena);
if (strcmp(CONTRASENA, contrasena) != 0)
{
printf("\tcontrasena invalida\n");
continue;
}
printf("\n**** BIENVENIDO ****\n");
break;
}
if (i == numIntentos)
{
printf("\n Programa no ejecutado.\n");
return 1;

}
printf("\n Programa ejecutando...\n");
}
while(access!=0);

system ("pause");
system ("cls");
for (I = 1; I <= 6; I++)
{
printf ("Ingrese descripcion");
scanf ("%d", &desc);
vn[I] = desc;

printf ("Ingrese sueldo basico");
scanf ("%d", &sb);
vsb[I] = sb;
printf ("Ingrese el valor de la hora extra", cat);
scanf ("%d", &he);
vhe[I] = he;

system ("cls");
}
{
int leg;
printf("ingrese el numero de legajo");
scanf("%d",&leg);
}
system ("cls");

while(leg!=100)
{
{
printf ("Ingrese mes");
scanf ("%d", &mes);
printf ("Ingrese saldo");
scanf ("%d", &sdoi);
printf("ingrese cantidad de horas extras trabajadas");
scanf("%d", &cheta[leg]);
if(leg != 100){
sdo[leg][mes] = sdo[leg][mes] + sdoi;
chet[leg][mes] = chet[leg][mes] + cheta[leg];
}
system ("cls");
while(leg!=100)
{
printf("ingrese el mes");
scanf("%d",&mes);
printf("ingrese numero de categoria");
scanf("%d",&cat);
printf("ingrese el numero de legajo");
scanf("%d",&leg);
if(leg != 100)
{
vleg[leg] = leg;
sdo[leg][cat] = vsb[cat] + vhe[cat] * chet[leg][mes];

}

system ("cls");

do{
int menu(int x);
{
printf("**** MENU ****");
printf(" \n");
printf("elige una opcion\n");
printf("1.- sueldo anual de cada empleado\n");
printf("2.- total pagado por mes\n");
printf("3.- cuantos sueldos superan el promedio\n");
printf("4.- maximo sueldo pagado en un mes\n");
printf("5.- porcentaje\n");
printf("6.- quien cobro menos en el semestre\n");
printf("7.- quien cobro mas en diciembre\n");
printf("8.- quien trabajo menos en el primer trimestre\n");
printf("9.- impresion por sueldo anual del empleado\n");
printf("10.- salir\n");
printf("opcion: ");
scanf("%d",&opc);
}
system ("cls");
switch (opc)
{

//fin
//punto A
case 1:
for(I = 1; I <= 80; I++)
{
for(J = 1; J <= 80; J++)
{
sdoa[I] = sdoa[I] + sdo[I][J];
printf("el sueldo anual de cada empleado es de %d,\n",sdoa[I]);
}
}
system ("pause");
system ("cls");
break;
//punto B
case 2:
for(I=1;I<=12;I++)
{
for(J=1;J<=80;J++)
{
total[I]=total[I]+sdo[J][I];
printf("el total pagado por mes es de %d,\n",total,I);

}
}
system ("pause");
system ("cls");
break;

//punto C
case 3:
for(I=1;I<=80;I++)
{
sdot=sdot+sdoa[I];
{
prom=sdot/80;
}
for(I=1;I<=80;I++)
{
if(sdoa[I]>sdot)
{
c=c+1;
}
printf("los sueldos que superan el promedio son %d,\n",c);
}
}
system ("pause");
system ("cls");
break;

//punto D
case 4:
for(I=1;I<=12;I++)
{
{
max[I]=sdo[1][1];
}
for(I=1;I<=12;I++)
{
for(J=1;J<=80;J++)
{
if(sdo[J][I]>max[I])
{
max[I]=sdo[J][I];
auxmax[I]=J;
}
for(I=1;I<=12;I++)
{
for(J=auxmax[I];J<=80;J++)
{
if(sdo[J][I]=max[I])
{
printf("el sueldo maximo es de %d,\n, y pertenece a %d,\n",sdo[J][I],J,I,max[I]);
}
}
}
}
}
}
system("pause");
system ("cls");
break;

//punto E
case 5:
for(I=1;I<=80;I++)
{
{
porr[I]=((sdoa[I]*100)/sdot);
{
for(I=1;I<=80;I++)
{
printf("el porcentaje de cada empleado es %d,\n",porr[I]);
}
}
}
}
system("pause");
system ("cls");
break;
//punto F
case 6:
{
min = sdo[1][6];
auxmin = 1;
for(I=6;I<=12;I++)
{
for(J=1;J<=80;J++)
{
if(sdo[J][I]<min)
{
min=sdo[J][I];
auxmin=I;
}
for(I=auxmin;I<=12;I++)
{
for(J=1;J<=80;J++)
{
if(sdo[J][I]=min)
{
printf("el empleado que cobro menos es %d,\n",sdo[J][I],J,min);
}
}
}
}
}
}
system ("pause");
system ("cls");
break;
//puto G
case 7:
{
mindic = sdo[1][12];
auxd = 1;
for(I=2;I<=80;I++)
{
if(sdo[I][J]<mindic)
{
mindic=sdo[I][J];
auxd=I;
}
for(I=auxd;I<=80;I++)
{
if(sdo[I][12]=mindic)
{
printf("el empleado que cobro mas en diciembre es %d,\n",sdo[I][12],I,mindic);
}
}
}
}
system ("pause");
system ("cls");
break;
//punto H
case 8:
{
minchet = chet[1][1];
auxchet = 1;
for(I=1;I<=3;I++)
{
for(J=1;J<=80;J++)
{
if(chet[J][I]<minchet)
{
minchet=chet[J][I];
auxchet=I;
}
for(I=auxchet;I<=3;I++)
{
for(J=1;J<=80;J++)
{
if(chet[J][I]=minchet)
{
printf("el empleado que trabajo menos en el primer trimestre es %d,\n",chet[J][I],J,minchet);
}
}
}
}
}
}
system ("pause");
system ("cls");
break;

//punto I
case 9:
for(I=1;I<=79;I++)
{
for(J=I+1;J<=80;J++)
{
if(sdoa[J]>sdoa[I])
{
a=sdoa[J];
sdoa[J]=sdoa[I];
sdoa[I]=a;
b=vleg[J];
vleg[J]=vleg[I];
vleg[I]=b;
c=cheta[J];
cheta[J]=cheta[I];
cheta[I]=c;
}
for(I=1;I<=80;I++)
{
printf("los sueldos anuales de los empleados son %d,\n",sdoa[I]);
printf("numero de legajo %d,\n",vleg[I]);
printf("la cantidad de horas extras trabajadas por cada empleado son %d,\n",cheta[I]);
}
}
system("pause");
system("cls");
break;
}
}
}

while (opc!=10);

system("cls");
system("pause");
return 0;
}
}
}
}

Los ciclos "for" para los arreglos inician en "0" y terminan en un numero menor al tamaño del arreglo ejemplo:

int A[10];
for(int i = 0; i<10; i++){
A[i] = i;
}

y no tomas en cuenta muchas cosas 

Aquí ya funciona el máximo de promedios pero tienes que tomar en cuenta muchas cosas el programa como lo tienes estructurada no correrá bien mas que en un escenario perfecto y aun así
"chet[leg][mes]" no tiene valores existente para ningún mes cuando inicia el programa y tu le pides un valor 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas