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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  necesito ayuda aqui, plox, me podrian ayudar?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: necesito ayuda aqui, plox, me podrian ayudar?  (Leído 2,343 veces)
LARANARENElol

Desconectado Desconectado

Mensajes: 11



Ver Perfil
necesito ayuda aqui, plox, me podrian ayudar?
« en: 2 Diciembre 2018, 23:56 pm »

disculpen pero este programa ya me tiene bien tilteado pero no se que hacer para que funcione de una mendig vez, esta es la sintaxis del problema:

En una escuela se desea un programa que permita la entrada de los nombres (proporcionar por separado:
nombre, apellido paterno y apellido materno) y promedios de cada uno de los alumnos que van a egresar de
secundaria, se desea mostrar un listado de cuantos son de apellido paterno “CARDENAS”, además se va a dar un
reconocimiento al alumno con el promedio más alto por lo que el programa deberá mostrar también el nombre y
promedio del alumno con el promedio más alto. Al mostrar el nombre completo del alumno con máximo promedio
deberá estar concatenado.
Nota.- el programa finaliza cuando el usuario no tenga más alumnos por capturar (respuesta si-no)

y esto es lo que llevo del mismo, (me da erroe en el main donde dice R= registro(nom,ape,apeM,calif, &n);

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<ctype.h>
  5. void registro( char nom[30][15],char ape[30][15], char apeM[30][15], float calif[30],int *n);
  6. void main(void)
  7. {int y, n=0,R;
  8. char nom[15], ape[15],apeM[15];
  9. char R,cadena1[9]="Cardenas",nombrecompleto[30],nomcalifM[30]="";
  10. float* calif;float cont1=0,califM=0;
  11.  
  12. R= registro(nom,ape,apeM,calif, &n);
  13.  
  14. {
  15. y=strlen(nom)+strlen(ape)+strlen(apeM)+2;
  16. if(y<30)
  17.  
  18. strcpy(nombrecompleto,nom);
  19.  
  20. strcpy(nombrecompleto," ");
  21.  
  22. strcpy(nombrecompleto,ape);
  23.  
  24. strcpy(nombrecompleto," ");
  25.  
  26. strcpy(nombrecompleto,apeM);
  27.  fflush(stdin);
  28. puts(nombrecompleto);
  29. if(calif>califM)
  30. {
  31. califM=calif;
  32. strcpy(nomcalifM,nom);
  33. }
  34. if(calif>califM);
  35. {califM=calif;
  36. strcpy(nomcalifM,nombrecompleto);
  37. printf("El nombre de la persona con mayor promedio es= %s con un promedio de %f\n",nomcalifM,califM);
  38. }
  39. }
  40.  
  41.  
  42.  
  43.  
  44. if(strcmp(ape,cadena1)==0)
  45. {
  46. cont1++;
  47. }
  48.  
  49.  
  50.  
  51.  
  52. printf("El numero de personas con apellido paterno Cardenas es = %.0f\n",cont1);
  53.  
  54.  
  55.  
  56.  
  57. system("pause");
  58. }
  59.  
  60. void registro(char nom[30][15],char ape[30][15], char apeM[30][15], float calif[30], int *n)
  61. {char R;
  62. do
  63. {
  64. printf("Ingrese el nombre\n");
  65. fflush(stdin);
  66. gets(nom[n*]);
  67. printf("Ingrese apellido paterno\n");
  68. fflush(stdin);
  69. gets(ape[n*]);
  70. printf("Ingrese apellido materno\n");
  71. fflush(stdin);
  72. gets(apeM[n*]);
  73. printf("Ingrese promedio\n");
  74. scanf("%f",&calif[n*]);
  75. *n=*n+1;
  76. printf("Desea ingresar otro\ S/N\n");
  77. fflush(stdin);
  78.  
  79. }while(R!='N');
  80. }

espero que me puedan ayudar, paz, tal vez en un rato vuelva a preguntar por que a vectores casi no le estoy entendiendo y no quiero suspender la materia :`c


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: necesito ayuda aqui, plox, me podrian ayudar?
« Respuesta #1 en: 3 Diciembre 2018, 00:02 am »

registro no devulve ningun tipo de dato. eso da error, ademas R es solo un caracter y no una cadena o algun otro tipo.

La concatenacion de candenas podrias realizarla mas rapido de la siguiente manera:

Código
  1. sprintf(nombrecompleto,"%s %s %s",nom,ape,apeM);

Saludos!


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: necesito ayuda aqui, plox, me podrian ayudar?
« Respuesta #2 en: 3 Diciembre 2018, 00:31 am »

Un par de cosas básicas que hay que arreglar:
- Tienes una variable <R> de tipo <int> y otra variable <R> de tipo <char>. Error, no pueden tener el mismo nombre.
- Como ya te han dicho la función <registro()> no devuelve ningún valor de retorno, no puedes hacer <R = registro(...)>.
- También te han comentado ya como concatenar el nombre con los apellidos, ya que si usas la función <strcpy> lo que haces es copiar una cadena en otra eliminando lo que tuviese la cadena destino. En todo caso infórmate sobre la función <strcat> o mejor aun la variante <strncat> por seguridad.
- Después de la condición de un <if> van las llaves "{}", no va un ";". Además tienes dos <if> seguidos con la misma condición pero con modificaciones que alteran el resultado de la condición y no entiendo muy bien eso.
- El contador <cont1> va a valer 0 o 1 ya que sólo se va a incrementar como mucho una vez. Y por qué hacer los contadores de tipo <float>?? Un contador vale 1 o 2 o 3... pero no 1.5...
- Tienes un bloque entre llaves en el <main> sin sentido. Osea unas llaves que se abren y se cierran pero no llevan ninguna sentencia antes como puede ser un <if> o un <while> o algo por el estilo.
- La función <registro()> recibe como parámetros matrices de tipo <char> y tú le mandas arrays en el <main>.

Otro par de cosas que deberías mejorar:
- No usar <fflush(stdin)>.
- No usar <system("pause")>. Sustitúyelo por <getchar()>.
- No usar <gets>. Usar <fgets> en su lugar.
- Qué narices es el parámetro <n> que pasas por referencia?? Creo entender que es el contador, pero...

Ahora sólo te queda investigar un poco lo que te hemos aconsejado y ver cómo modificas tu programa. Y ahora me voy a dormir que me iba a ir cuando he visto el programa pero iba a tener pesadillas si no hacía nada al respecto. Suerte :rolleyes:
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: necesito ayuda aqui, plox, me podrian ayudar?
« Respuesta #3 en: 3 Diciembre 2018, 01:06 am »

Y ahora me voy a dormir que me iba a ir cuando he visto el programa pero iba a tener pesadillas si no hacía nada al respecto. Suerte :rolleyes:

Jajajaja, ya me imagino, No me comaaa serñor fflush(stdin); ya voy a utiliza  fseek(stdin, 0, SEEK_END); como indican en ¿Queda algo en el Buffer de Entrada stdin? (Solucionado)

Por cierto date una vuelta por este tema: Lo que no hay que hacer en C/C++. Nivel basico

Saludos!

En línea

LARANARENElol

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Re: necesito ayuda aqui, plox, me podrian ayudar?
« Respuesta #4 en: 3 Diciembre 2018, 01:23 am »

bueno, me pudenen hacer mi tarea, o parte de ella, es que casi no le entiendo a vectores y este programa lo necesito para ahora eb la night, so me pueden ayudar?

el problema o programa es:
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.

si no quieren pues no pasa nada, ya me han ayudado mucho por muchas semanas, son geniales y gracias en serio, no puedo pedir una mejor comunidad, pero a ver si me podrian ayudar
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: necesito ayuda aqui, plox, me podrian ayudar?
« Respuesta #5 en: 3 Diciembre 2018, 02:05 am »

Para capturar datos te recomiendo el post que publique:

https://foro.elhacker.net/programacion_cc/plantillas_programas_escolares_en_c-t489889.0.html

Ahi podrar captirar N cantidad de empleados y sus sueldos, posteriormente solo te quedara sacar el progrmedio.

Saludos!
En línea

dariodr01

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: necesito ayuda aqui, plox, me podrian ayudar?
« Respuesta #6 en: 3 Diciembre 2018, 14:53 pm »

Hola, la entrada de datos podria ser asi:
Salu2.

Código
  1. while (opcion != 'n') {
  2.        printf("Nombre del alumno: ");
  3.        scanf("%s",nombre[i]);
  4.        printf("Apellido paterno: ");
  5.        scanf("%s",apellidoPaterno[i]);
  6.        printf("Apellido materno: ");
  7.        scanf("%s",apellidoMaterno[i]);
  8.        printf("Promedio del alumno: ");
  9.        scanf("%f",&promedio[i]);
  10.        getchar();
  11.  
  12.        printf("Capturar mas alumnos s/n: ");
  13.        scanf("%c",&opcion);
  14.        getchar();
  15.        printf("\n");
  16.  
  17.        if (opcion == 's')
  18.            i++;
  19.  
  20.        if (i > 100) {
  21.            printf("Lo siento, la lista esta llena.");
  22.            break;
  23.        }
  24.    }
  25.  

Y la comparacion del apeellido podria ser asi:

Código
  1. for (j=0; j<i+1; j++) {
  2.        if (strcmp(apellidoPaterno[j],patron) == 0) {
  3.            printf("Nombre: %s\n",nombre[j]);
  4.            printf("Apellido paterno: %s\n",apellidoPaterno[j]);
  5.            printf("Apellido materno: %s\n",apellidoMaterno[j]);
  6.        }
  7.    }
  8.  

Ahora te toca armas el programa.
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: necesito ayuda aqui, plox, me podrian ayudar?
« Respuesta #7 en: 3 Diciembre 2018, 15:50 pm »

Hola, la entrada de datos podria ser asi:
Salu2.

Código
  1. while (opcion != 'n') {
  2.        printf("Nombre del alumno: ");
  3.        scanf("%s",nombre[i]);
  4.        printf("Apellido paterno: ");
  5.        scanf("%s",apellidoPaterno[i]);
  6.        printf("Apellido materno: ");
  7.        scanf("%s",apellidoMaterno[i]);
  8.        printf("Promedio del alumno: ");
  9.        scanf("%f",&promedio[i]);
  10.        getchar();
  11.  
  12.        printf("Capturar mas alumnos s/n: ");
  13.        scanf("%c",&opcion);
  14.        getchar();
  15.        printf("\n");
  16.  
  17.        if (opcion == 's')
  18.            i++;
  19.  
  20.        if (i > 100) {
  21.            printf("Lo siento, la lista esta llena.");
  22.            break;
  23.        }
  24.    }
  25.  

No es recomendable usar <break> para salir de un bloque que no sea un <switch>. Lo correcto sería un <do while> y en el <while> dos condiciones (opcion != 'n' && i < 100). :rolleyes:

Y no controlo demasiado de C sin compilar pero igual tienes problemas con los saltos de línea en el buffer...
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
necesito ayuda son nuevo aqui....
Programación C/C++
christian_aqp 1 1,915 Último mensaje 30 Marzo 2012, 05:17 am
por durasno
Necesito una explicacion en JAVA, plox :'v
Java
caxlsh 2 2,059 Último mensaje 2 Septiembre 2016, 22:42 pm
por Javasote
ayuda soy nuevo en esto me podrian ayudar nc como comenzar este problema
Programación C/C++
estebanxdx 2 4,372 Último mensaje 6 Febrero 2018, 15:00 pm
por dijsktra
hola me podrían ayudar necesito hakear la cuanta de facebook
Foro Libre
fox 2 1,586 Último mensaje 25 Junio 2018, 17:20 pm
por simorg
Error ld 1 returned status. Ayuda plox
Programación C/C++
daaralvarez 3 1,368 Último mensaje 20 Noviembre 2018, 09:34 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines