|
Mostrar Mensajes
|
Páginas: [1]
|
1
|
Programación / Programación C/C++ / Re: [C] Array unidimensional
|
en: 22 Mayo 2018, 18:55 pm
|
Hola muchas gracias por responder a mis dudas fueron de mucha ayuda tus comentarios, probe lo que dijiste sobre mi problema número dos y así quedó mi programa ahora: Ahora cuando elijo ingresar por ejemplo dos sueldos, ingreso el primer sueldo después me pregunta si quiero ingresar otro sueldo y cuando pulso s se sale del ciclo. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main() { int sueldo[100]; char op; int i,j, D, arc, empleados=0; float promedio, suma=0; printf("\nCuantos sueldos desea ingresar?: "); scanf("%i", &D); if (D > 0 && D < 100) { do { for (i = 0; i < D-1; i++){ system("cls"); printf("Ingresa el sueldo del empleado %i: ", i + 1); scanf("%i", &sueldo[i]); suma += sueldo[i]; printf("\nDesea introducir un sueldo? [s/n]: "); fflush(stdin); while (getchar() != '\n'); scanf("%c", &op); if (op == 'n' || op == 'N') { break; } } } while (D<1||D>99); system("cls"); //Total de nomina de la empresa printf("\nTOTAL DE NOMINA: %.2f", suma); //Sueldos ordenados de menor a mayor for (i = 0; i < D; i++) for(j = i + 1; j < D; j++) if (sueldo[i] > sueldo[j]) { arc = sueldo[i]; sueldo[i] = sueldo[j]; sueldo[j] = sueldo[i]; } printf("\nLISTA ORDENADA DE SUELDOS"); for (i = 0; i < D; i++) { printf("\n%i", sueldo[i]); } //Cantidad de empleados capturados empleados = empleados + i; printf("\nCANTIDAD DE EMPLEADOS: %i", empleados); //Promedio de sueldo de la nomina promedio = suma / D; printf("\nPROMEDIO DE SUELDO: %.2f", promedio); //Cantidad de empleados con un sueldo superior al promedio if (sueldo[i] > promedio) { printf("\nCANTIDAD DE EMPLEADOS CON SUELDO SUPERIOR AL PROMEDIO: %i", sueldo[i]); }
} else { printf("\nNumero de sueldos a ingresar no valido.\n\nSolo se permite ingresar hasta 100 sueldos."); } system("pause>null"); }
|
|
|
2
|
Programación / Programación C/C++ / [C] Array unidimensional
|
en: 22 Mayo 2018, 15:13 pm
|
Hola a todos estoy haciendo un programa para la escuela pide que calcule la nomina total de una empresa entre otras cosas que describo abajo pero tengo unos problemas, explicare brevemente que hace mi programa: Con el if pongo el rango de que solo se permiten valores mayores de 0 hasta 100, luego dentro de un ciclo do-while pongo un ciclo for que se repetirá n veces dependiendo de los sueldos que se quiera ingresar, por cada sueldo ingresado se nos preguntara si queremos ingresar otro sueldo aquí es donde ya surgen mis problemas: 1) Si por ejemplo elegí ingresar dos sueldos y solo ingreso uno, y elijo que no quiero ingresar otro sueldo me imprime el sueldo ingresado y después números al azar como si hubiera ingresado un segundo sueldo, como puedo arreglar eso? 2) Si por ejemplo elijo de nuevo ingresar 2 sueldos, me pide que ingrese el sueldo del empleado 1 después me pregunta que si quiero ingresar otro sueldo elijo que si, ingreso el sueldo del empleado 2 y despues me vuelve a preguntar si quiero ingresar otro sueldo y no quiero que haga eso el programa quiero que imprima directamente después de ingresar el segundo sueldo. 3) Como puedo saber cuantos empleados tienen un sueldo superior al promedio? De antemano muchas gracias, espero que puedan ayudarme a avanzar... /*Elaborar un programa que capte un grupo de sueldos de los empleados de una empresa(nómina), tomando en cuenta que el programa debe pedir sueldos mientras el usuario elija la opción de continuar. Al finalizar la captura de la nómina, el programa deberá generar un reporte con lo siguiente :
* Total de nómina de la empresa * Los sueldos ordenados de menor a mayor * Cantidad de empleados capturados * Promedio de sueldo de la nómina * Cantidad de empleados con un sueldo superior al promedio
El programa debe usar funciones y considerar un grupo máximo de 100 empleados.
Validar que no existan sueldos negativos.*/
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h>
void main() { int sueldo[100]; char op; int i,j, D, arc, empleados=0; float promedio, suma=0;
printf("\nCuantos sueldos desea ingresar?: "); scanf_s("%i", &D);
if (D > 0 && D <= 100) { do { for (i = 0; i < D; i++) {
system("cls");
printf("Ingresa el sueldo del empleado %i: ", i + 1); scanf_s("%i", &sueldo[i]); suma += sueldo[i];
printf("\nDesea introducir un sueldo? [s/n]: "); fflush(stdin); while (getchar() != '\n'); scanf_s("%c", &op); if (op == 'n' || op == 'N') { break; }
} } while (op == 's'||op == 'S');
system("cls");
//-------------------------Total de nómina de la empresa----------------------- printf("\nTOTAL DE NOMINA: %.2f", suma); //-----------------------------------------------------------------------------
//------------------------Sueldos ordenados de menor a mayor------------------ for (i = 0; i < D; i++) for(j = i + 1; j < D; j++) if (sueldo[i] > sueldo[j]) { arc = sueldo[i]; sueldo[i] = sueldo[j]; sueldo[j] = sueldo[i]; }
printf("\nLISTA ORDENADA DE SUELDOS"); for (i = 0; i < D; i++) { printf("\n%i", sueldo[i]); } //-----------------------------------------------------------------------------
//-----------------------Cantidad de empleados capturados---------------------- empleados = empleados + i; printf("\nCANTIDAD DE EMPLEADOS: %i", empleados); //-----------------------------------------------------------------------------
//---------------------Promedio de sueldo de la nómina------------------------- promedio = suma / D; printf("\nPROMEDIO DE SUELDO: %.2f", promedio); //-----------------------------------------------------------------------------
//----------Cantidad de empleados con un sueldo superior al promedio-------- if (sueldo[i] > promedio) { printf("\nCANTIDAD DE EMPLEADOS CON SUELDO SUPERIOR AL PROMEDIO: %i", sueldo[i]); } //-----------------------------------------------------------------------------
} else { printf("\nNumero de sueldos a ingresar no valido.\n\nSolo se permite ingresar hasta 100 sueldos."); }
system("pause>null"); }
|
|
|
3
|
Programación / Programación C/C++ / Sacar promedio [C]
|
en: 19 Abril 2018, 02:50 am
|
Hola a todos como le hago para que cuando ingrese calificaciones con valores mayores a 100 no saque el promedio y solo imprima un error. int promedio() { int a, b, c, Promedio; printf("Introduce tus tres calificaciones: \n"); scanf_s("%d %d %d", &a, &b, &c); if ((a >= 0 && a <= 100) && (b >= 0 && b <= 100) && (c >= 0 && c <= 100)) printf("Valores validos\n"); else printf("ERROR\n"); Promedio = (a + b + c) / 3; printf("El promedio es %d",Promedio); return Promedio; }
|
|
|
4
|
Programación / Programación C/C++ / Juego de dados [C]
|
en: 11 Abril 2018, 20:10 pm
|
Hola a todos estoy haciendo un programa donde en una de sus condiciones pide que cuando en cualquiera de los 3 dados salga un 6 imprima un "regular" lo que no quiero que salga es que cuando ponga valores no permitidos como dado1=7, dado2=6, dado3=5, no imprima un "regular" y me mande a un valor no permitido o error. /*2. Elaborar un programa que pida los datos necesarios y a través de una función que reciba valores, califique el puntaje obtenido en el lanzamiento de tres dados con respecto a la cantidad de seis obtenidos, de acuerdo a lo siguiente: Seis en los tres dados, excelente. Seis en dos dados, muy bien Seis en un dado, regular Ningún seis, pésimo */
#include <stdio.h> #include <stdlib.h> #include <locale.h> void dados(int, int, int); void main() { setlocale(LC_ALL, ".ACP"); int dado1, dado2, dado3; printf("\nIngresa el puntaje obtenido del primer dado: "); scanf_s("%d", &dado1); printf("\nIngresa el puntaje obtenido del segundo dado: "); scanf_s("%d", &dado2); printf("\nIngresa el puntaje obtenido del tercer dado: "); scanf_s("%d", &dado3); if (dado1 >= 1 && dado1 <= 6 && dado2 >= 1 && dado2 <= 6 && dado3 >= 1 && dado3 <= 6) { printf("\nValores permitidos"); } else if(dado1>6 && dado2>6 && dado3>6) { printf("\nValor no valido"); } else if (dado1==0 && dado2==0 && dado3==0) { printf("\nValor no valido"); } dados(dado1, dado2, dado3); system("pause>null"); }
void dados(int dado1, int dado2, int dado3) { if (dado1 == 6 && dado2 == 6 && dado3 == 6) { printf("\nExcelente"); } else if (dado1 == 6 && dado2 == 6 || dado1 == 6 && dado3 == 6 || dado2 == 6 && dado3 == 6) { printf("\nMuy bien"); } else if (dado1>=1 && dado1<=6 && dado1 == 6 || dado2 >= 1 && dado2 <= 6 && dado2 == 6 || dado3 >= 1 && dado3 <= 6 && dado3 == 6) { printf("\nRegular"); } else { printf("\nPesimo"); } }
|
|
|
5
|
Programación / Programación C/C++ / Roca, papel y tijeras-Problema [C]
|
en: 9 Abril 2018, 10:19 am
|
Hola que tal soy nuevo en este foro tengo un problema ya me atore con este programa ya no supe que mas hacer cuando corro el programa y elijo cualquier opción para el jugador 1 me lo manda como caracter no valido, espero que puedan iluminarme amigos, de antemano muchas gracias SOURCE /*1. En el juego para dos personas llamado "ROCA, PAPEL Y TIJERAS" cada jugador escoge ser "T", "R" o "P" respectivamente. El jugador se determina así por medio de la función: roca rompe tijeras, las tijeras cortan el papel, el papel cubre la roca, el juego es un empate si ambos jugadores eligen la misma opción. Elaborar un programa para que determine cual jugador gana, la salida debe mostrarse por la función de la siguiente forma: "T-R Roca rompe tijeras gana el jugador 2"*/
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include "juego.h"
void main() { int Juego; char x, y; printf("\t\t\tJUEGO ROCA, PAPEL Y TIJERAS\n"); printf("Bienvenidos elijan un arma\nR.-Roca\nP.-Papel\nT.-Tijeras\n"); printf("Arma jugador 1: [ ]\b\b"); fflush(stdin); scanf_s("%c", &x); toupper(x); printf("Arma jugador 2: [ ]\b\b"); fflush(stdin); scanf_s("%c", &y); toupper(y);
if (x == 'R' &&y == 'R') { Juego = 1; } else if (x == 'P' &&y == 'P') { Juego = 2; } else if (x == 'T' &&y == 'T') { Juego = 3; } if (x == 'R' &&y == 'P') { Juego = 4; } else if (x == 'P' &&y == 'T') { Juego = 5; } else if (x == 'T' &&y == 'R') { Juego = 6; } if (x == 'R' &&y == 'T') { Juego = 7; } else if (x == 'P' &&y == 'R') { Juego = 8; } else if (x == 'T' &&y == 'P') { Juego = 9; } else { Juego = 0; }
switch (Juego) { case 1: printf("\nR-R Empate"); break; case 2: printf("\nP-P Empate"); break; case 3: printf("\nT-T Empate"); break; case 4: papel_cubre_roca(x, y); break; case 5: tijeras_cortan_papel(x, y); break; case 6: roca_rompe_tijeras(x, y); break; case 7: roca_rompe_tijeras(x, y); break; case 8: papel_cubre_roca(x, y); break; case 9: tijeras_cortan_papel(x, y); break; case 0: printf("\nCARACTER INVALIDO"); break; } system("pause>null"); } HEADER void papel_cubre_roca(char,char); void tijeras_cortan_papel(char, char); void roca_rompe_tijeras(char, char);
void papel_cubre_roca(char x, char y) { if (x == 'P'&& y == 'R') { printf("\n%c-%c P-R Papel cubre roca gana el jugador 1", x, y); } else printf("\n%c-%c R-P Papel cubre roca gana el jugador 2", x, y); } void tijeras_cortan_papel(char x, char y) { if (x == 'T'&& y == 'P') { printf("\n%c-%c T-P Tijeras cortan papel gana el jugador 1", x, y); } else printf("\n%c-%c P-T Tijeras cortan papel gana el jugador 2", x, y); } void roca_rompe_tijeras(char x, char y) { if (x == 'R'&& y == 'T') { printf("\n%c-%c R-T Roca rompe tijeras gana el jugador 1",x,y); } else printf("\n%c-%c T-R Roca rompe tijeras gana el jugador 2", x, y); }
|
|
|
|
|
|
|