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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 [2] 3
11  Programación / Programación C/C++ / Programa crashea luego de ingresar valores por teclado [C] en: 14 Enero 2018, 05:01 am
Tengo un problema con mi programa. Hace un mes más o menos, había programado el siguiente código, lo publiqué aquí porque tenía un pequeño problemita y me ayudaron a resolverlo y funcionaba a la perfección. He cambiado de computadora y todo, pero ahora cuando ejecuto mi programa, crashea luego de ingresar un valor a las "mandarinas".

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[]) {
  5. int n, x, i, a=0, b=0, parcela[20][2];
  6. do{
  7. printf("Ingrese la cantidad de parcelas: ");
  8. scanf("%d",&n);
  9. }while(n<=0 || n>=21);
  10. system("cls");
  11. for(i=0;i<=n;i++){
  12. printf("Parcela #%d ",i+1);
  13. do{
  14. printf("\nIngrese la cantidad de naranjas: ");
  15. scanf("%d",&parcela[0][0]);
  16. }while(parcela[0][0]<=0);
  17. do{
  18. printf("Ingrese la cantidad de mandarinas: ");
  19. scanf("%d",&parcela[0][1]);
  20. }while(parcela[0][1]<=0);
  21. a+=parcela[0][0];
  22. b+=parcela[0][1];
  23. parcela[i][x]=parcela[0][0]+parcela[0][1];
  24. system("cls");
  25. }
  26. system("cls");
  27. printf("Total produccion naranjas: %d ",a);
  28. printf("\nTotal produccion mandarinas: %d ",b);
  29. for(i=1;i<=n;i++){
  30. printf("\nProduccion total de Parcela #%d: %d ",i, parcela[i][x]);
  31. }
  32. return 0;
  33. }
  34.  
12  Programación / Programación C/C++ / Re: Problema al comparar cadenas de caracteres [C] en: 27 Noviembre 2017, 16:45 pm
Primero te recomendaría que elijas solo para ingresar strings scanf+fflush o gets, si mal no recuerdo fflush no era necesario con gets, pero por otra parte estás en el scanf asignando mal la dirección de memoria del string cod, si ya de por sí es un puntero/array/etc... no hace falta asignarle el símbolo ampersand para especificarle dirección de memoria porque de por sí lo toma como dirección de memoria. En todo caso al asignarle ampersand al vector estarías especificandole que dentro de los valores basura que tiene cod dicho valor sea dirección de memoria, por lo tanto estaría guardandose el valor en cualquier lado y no en el vector real...
El hecho que no haya crasheado el programa con eso sería raro habría que depurarlo para ver bién donde quedó guardado realmente el código ingresado...


B#
El problema no está en el registro, el problema está en la búsqueda, porque si corres el programa en tu entorno, podrás observar que, al ingresar un código previamente ingresado y compararlo, el programa además de mostrar el nombre del producto al que le pertenece el código, también imprime otros dos mensajes del else
13  Programación / Programación C/C++ / Problema al comparar cadenas de caracteres [C] en: 27 Noviembre 2017, 02:58 am
Tengo este problema al comparar cadenas de caracteres. A la hora de buscar un código previamente ingresado en el arreglo, este imprime el mensaje "No existe" cuando únicamente ingreso uno de los códigos. Ejemplo:
Código ingresado en el segundo arreglo: cp020
Búsqueda: No Existe
'Nombre del producto'
No existe
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <string.h>
  5.  
  6. void menu(){
  7. printf("\t*****CONTROL DE INVENTARIO*****\n");
  8. printf("1.-Listado del inventario actual\n2.-Busqueda de productos\n3.-Ingresos totales\n4.-SALIR\n");
  9. printf("--------------------------------\n");
  10. }
  11.  
  12. void salida(){
  13. printf("Saliendo del programa... Hasta pronto!\n");
  14. }
  15. struct Inventario{
  16. char codigo[10];
  17. char nombre[25];
  18. int cantidad;
  19. float pventa;
  20. };
  21. int Registrar(Inventario x[], int i){
  22. for(i=0;i<=2;i++){
  23. printf("\tRegistrar productos\n");
  24. printf("Producto #%d \n",i);
  25. printf("Ingrese el codigo del producto: ");
  26. gets(x[i].codigo);
  27. fflush(stdin);
  28. printf("\nIngrese el nombre del producto: ");
  29. gets(x[i].nombre);
  30. fflush(stdin);
  31. do{
  32. printf("\nIngrese la cantidad: ");
  33. scanf("%d",&x[i].cantidad);
  34. fflush(stdin);
  35. }while(x[i].cantidad<=0);
  36. do{
  37. printf("\nIngrese el precio de venta: ");
  38. scanf("%f",&x[i].pventa);
  39. fflush(stdin); //Limpieza del buffer
  40. }while(x[i].pventa<=0);
  41. system("cls");
  42. }
  43. }
  44. void Lista(int i, Inventario x[]){
  45. for(int j=0;j<=2;j++){
  46. printf("   %s    %s        %d      %0.2f \n",x[j].codigo, x[j].nombre, x[j].cantidad, x[j].pventa);
  47. }
  48. }
  49. char Busqueda(Inventario x[], int i){
  50. char cod[10];
  51. printf("Ingrese el codigo que desea buscar: ");
  52. scanf("%s",&cod);
  53. fflush(stdin);
  54. for(int j=0;j<=2;j++){
  55. if(strcmp(x[j].codigo, cod)==0){
  56. printf("\nProducto: %s \n",x[j].nombre);
  57. break;
  58. }else{
  59. printf("\nNo Existe\n");
  60. break;
  61. }
  62. }
  63. }
  64. float Venta(Inventario x[], int i){
  65. float total;
  66. for(int j=0;j<=2;j++){
  67. total+=x[j].cantidad*x[j].pventa;  //Primero, multiplica la cantidad por el precio y al final, se suma para el total del inventario vendedido.
  68. }
  69. printf("Ingreso total: %0.2f $ \n",total);
  70. }
  71. int main(){
  72. struct Inventario prod[20];
  73. int i=0, op;
  74. bool salir = true;
  75. Registrar(prod,i); //Llamamos a la funcion "Registrar"
  76. do{
  77. system("cls");
  78. menu(); //Llamamos a la funcion "Menu"
  79. do{
  80. printf("\nSeleccione una opcion: ");
  81. scanf("%d",&op);
  82. }while(op<=0 || op>=5);
  83. system("cls");
  84. switch(op){
  85. case 1:{
  86. printf("\tINVENTARIO ACTUAL\n");
  87. printf("   Codigo    Producto        Cantidad      Precio de Venta\n");
  88. Lista(i,prod);
  89. system("PAUSE");
  90. system("cls");
  91. break;
  92. }
  93. case 2:{
  94. printf("\tBUSQUEDA\n");
  95. Busqueda(prod, i);
  96. fflush(stdin);
  97. system("PAUSE");
  98. system("cls");
  99. break;
  100. }
  101. case 3:{
  102. printf("\tVENTA TOTAL DEL INVENTARIO\n");
  103. Venta(prod, i);
  104. system("PAUSE");
  105. system("cls");
  106. break;
  107. }
  108. case 4:{
  109. salida();
  110. salir = false;
  111. break;
  112. }
  113. }
  114. }while(salir==true);
  115. return 0;
  116. }
  117.  
14  Programación / Programación C/C++ / Problema al leer caracteres [C] en: 16 Noviembre 2017, 18:45 pm
El problema que tengo es, que sólo imprime el nombre del primer producto con el código registrado, a la hora de buscar los demás códigos, me envía el mensaje que "No existe" cuando no es así. Aquí les dejo el código:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <string.h>
  5. void menu();
  6. void menu(){
  7. printf("\t*****CONTROL DE INVENTARIO*****\n");
  8. printf("1.-Listado del inventario actual\n2.-Busqueda de productos\n3.-Ingresos totales\n4.-SALIR\n");
  9. printf("--------------------------------\n");
  10. }
  11. void salida();
  12. void salida(){
  13. printf("Saliendo del programa... Hasta pronto!\n");
  14. }
  15. struct Inventario{
  16. char codigo[10];
  17. char nombre[25];
  18. int cantidad;
  19. float pventa;
  20. };
  21. int Registrar(Inventario x[], int i);
  22. int Registrar(Inventario x[], int i){
  23. for(i=0;i<=2;i++){
  24. printf("\tRegistrar productos\n");
  25. printf("Producto #%d \n",i);
  26. printf("Ingrese el codigo del producto: ");
  27. gets(x[i].codigo);
  28. fflush(stdin);
  29. printf("\nIngrese el nombre del producto: ");
  30. gets(x[i].nombre);
  31. fflush(stdin);
  32. do{
  33. printf("\nIngrese la cantidad: ");
  34. scanf("%d",&x[i].cantidad);
  35. }while(x[i].cantidad<=0);
  36. fflush(stdin);
  37. do{
  38. printf("\nIngrese el precio de venta: ");
  39. scanf("%f",&x[i].pventa);
  40. }while(x[i].pventa<=0);
  41. fflush(stdin);
  42. system("cls");
  43. }
  44. }
  45. void Lista(int i, Inventario x[]);
  46. void Lista(int i, Inventario x[]){
  47. for(int j=0;j<=2;j++){
  48. printf("%s \t %s \t %d \t %0.2f \n",x[j].codigo, x[j].nombre, x[j].cantidad, x[j].pventa);
  49. }
  50. }
  51. /*Aqui esta el problema*/
  52. void Busqueda(char cod[10], Inventario x[], int i);
  53. void Busqueda(char cod[10], Inventario x[], int i){
  54. printf("Ingrese el codigo que desea buscar: ");
  55. scanf("%s",&cod);
  56. fflush(stdin);
  57. for(int j=0;j<=2;j++){
  58. if(strcmp(x[j].codigo,cod)==0){
  59. printf("\nProducto: %s \n",x[j].nombre);
  60.                        break;
  61. }else{
  62. printf("\nNo Existe\n");
  63.                        break;
  64. }
  65. }
  66. }
  67. /*                                        */
  68. float Venta(Inventario x[], int i);
  69. float Venta(Inventario x[], int i){
  70. float total;
  71. for(int j=0;j<=2;j++){
  72. total+=x[j].cantidad*x[j].pventa;
  73. }
  74. printf("Ingreso total: %0.2f \n",total);
  75. }
  76. int main(){
  77. struct Inventario prod[20];
  78. int i=0, op;
  79. char cod[10];
  80. bool salir = true;
  81. Registrar(prod,i);
  82. do{
  83. system("cls");
  84. menu();
  85. do{
  86. printf("\nSeleccione una opcion: ");
  87. scanf("%d",&op);
  88. }while(op<=0 || op>=5);
  89. system("cls");
  90. switch(op){
  91. case 1:{
  92. printf("\tINVENTARIO ACTUAL\n");
  93. Lista(i,prod);
  94. system("PAUSE");
  95. system("cls");
  96. break;
  97. }
  98. case 2:{
  99. printf("\tBUSQUEDA\n");
  100. Busqueda(cod, prod, i);
  101. system("PAUSE");
  102. system("cls");
  103. break;
  104. }
  105. case 3:{
  106. printf("\tVENTA TOTAL DEL INVENTARIO\n");
  107. Venta(prod, i);
  108. system("PAUSE");
  109. system("cls");
  110. break;
  111. }
  112. case 4:{
  113. salida();
  114. salir = false;
  115. break;
  116. }
  117. }
  118. }while(salir==true);
  119. return 0;
  120. }
  121.  
15  Programación / Programación C/C++ / Re: [C] De una cadena de 10 dígitos, capturar lo últimos 4 dígitos e imprimirlos en: 26 Octubre 2017, 02:50 am
Bien, aquí está el código:

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. struct Estudiantes{
  4. int cedula;
  5. char nombre[25];
  6. char apellido[25];
  7. int edad;
  8. char profesion[20];
  9. int nacimiento;
  10. char direccion[50];
  11. int telefono;
  12. };
  13. int main(int argc, char const *argv[])
  14. {
  15. struct Estudiantes estud[30];
  16. int i;
  17. printf("\tREGISTRO\n");
  18. for(i=1;i<=30;i++){
  19. printf("Estudiante #%d \n",i);
  20. printf("Ingrese el nombre del estudiante: ");
  21. scanf("%s",&estud[i].nombre);
  22. fflush(stdin);
  23. printf("Ingrese el apellido: ");
  24. scanf("%s",&estud[i].apellido);
  25. fflush(stdin);
  26. printf("Ingrese la cedula: ");
  27. scanf("%d",&estud[i].cedula);
  28. fflush(stdin);
  29. estud[i].nacimiento=estud[i].cedula%10000;
  30. estud[i].edad=2017-estud[i].nacimiento;
  31. printf("Ingrese la profesion: ");
  32. scanf("%s",&estud[i].profesion);
  33. fflush(stdin);
  34. printf("Ingrese la direccion: ");
  35. scanf("%s",&estud[i].direccion);
  36. fflush(stdin);
  37. printf("Ingrese el numero de telefono: ");
  38. scanf("%d",&estud[i].telefono);
  39. system("cls");
  40. }
  41.  
  42. for(i=1;i<=30;i++){
  43. printf("Nombre y Apellido: %s %s \n",estud[i].nombre, estud[i].apellido);
  44. printf("Cedula: %d\n",estud[i].cedula);
  45. printf("año de nacimiento: %d \n",estud[i].nacimiento);
  46. printf("Edad: %d \n",estud[i].edad);
  47. printf("Profesion: %s \n",estud[i].profesion);
  48. printf("Telefono: %d \n",estud[i].telefono);
  49. printf("\n \n");
  50. }
  51. return 0;
  52. }
  53.  
16  Programación / Programación C/C++ / Re: [C] De una cadena de 10 dígitos, capturar lo últimos 4 dígitos e imprimirlos en: 26 Octubre 2017, 02:33 am
Voy a probarlo. Cuando lo termine, mostraré el código.
17  Programación / Programación C/C++ / [C] De una cadena de 10 dígitos, capturar lo últimos 4 dígitos e imprimirlos en: 26 Octubre 2017, 02:17 am
Necesito su ayuda con este pequeño problemilla que tengo. Tengo que ingresar los datos de una ID, y como los últimos cuatro dígitos contiene el año de nacimiento, no sé como capturar estos 4 dígitos e imprimirlos.

No adjunto código porque no tengo ni la más mínima idea de cómo capturar estos dígitos.
18  Programación / Programación C/C++ / Re: No puedo sumar las parcelas, sólo el total de naranjas y mandarinas [C] en: 17 Octubre 2017, 03:53 am
Ese era mí problema; me ha servido de mucha ayuda tu consejo, te lo agradezco mucho. Aquí dejo el código con el problema resuelto:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[]) {
  5. int n, x, i, a=0, b=0, parcela[50][50];
  6. do{
  7. printf("Ingrese la cantidad de parcelas: ");
  8. scanf("%d",&n);
  9. }while(n<=0);
  10. system("cls");
  11. for(i=1;i<=n;i++){
  12. printf("\nParcela #%d ",i);
  13. do{
  14. printf("\nIngrese la cantidad de naranjas: ");
  15. scanf("%d",&parcela[i][1]);
  16. }while(parcela[i][1]<=0);
  17. do{
  18. printf("Ingrese la cantidad de mandarinas: ");
  19. scanf("%d",&parcela[i][2]);
  20. }while(parcela[i][2]<=0);
  21. a+=parcela[i][1];
  22. b+=parcela[i][2];
  23. parcela[i][x]=parcela[i][1]+parcela[i][2];
  24. }
  25. printf("\nTotal produccion naranjas: %d ",a);
  26. printf("\nTotal produccion mandarinas: %d ",b);
  27. for(i=1;i<=n;i++){
  28. printf("\nParcela #%d: %d ",i, parcela[i][x]);
  29. }
  30. return 0;
  31. }
  32.  
19  Programación / Programación C/C++ / No puedo sumar las parcelas, sólo el total de naranjas y mandarinas [C] en: 17 Octubre 2017, 03:14 am
He hecho este programa en C, pero no puedo sumar las parcelas, sólo el total de naranjas y mandarinas. Espero que podaís ayudarme. Lo que quiero es, de 'n' parcelas, imprimir el total de cada una. Aquí mi programa:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[]) {
  5. int n, i, j, a=0, b=0, parcela[50];
  6. do{
  7. printf("Ingrese la cantidad de parcelas: ");
  8. scanf("%d",&n);
  9. }while(n<=0);
  10. system("cls");
  11. for(i=1;i<=n;i++){
  12. printf("\nParcela #%d ",i);
  13. do{
  14. printf("\nIngrese la cantidad de naranjas: ");
  15. scanf("%d",&parcela[i]);
  16. }while(parcela[i]<=0);
  17. do{
  18. printf("Ingrese la cantidad de mandarinas: ");
  19. scanf("%d",&parcela[j]);
  20. }while(parcela[j]<=0);
  21. a=a+parcela[i];
  22. b=b+parcela[j];
  23. parcela[n]=parcela[i]+parcela[j];
  24. }
  25. printf("\nTotal produccion naranjas: %d ",a);
  26. printf("\nTotal produccion mandarinas: %d ",b);
  27. for(i=1;i<=n;i++){
  28. printf("\nParcela #%d: %d ",i, parcela[n]);
  29. }
  30. return 0;
  31. }
  32.  


· Los títulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex
20  Programación / Programación C/C++ / Re: Problema en C en: 28 Septiembre 2017, 02:09 am
He solucionado yo mismo el problema. Se los dejo aquí abajo por si alguien no sabía cómo hacerlo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(int argc, char const *argv[])
  4. {
  5. int i, j, mat[7][50], N, total, mayor=0, x=0;
  6. char value;
  7. bool salir = true;
  8. do{
  9. system("cls");
  10. do{
  11. printf("Cantidad de vacas: ");
  12. scanf("%d",&N);
  13. }while(N<=0);
  14. system("cls");
  15. for(i=1;i<=N;i++){
  16. printf("Vaca #%d \n",i);
  17. for(j=1;j<=7;j++){
  18. do{
  19. printf("Cantidad de leche en el dia #%d \n",j);
  20. scanf("%d",&mat[i][j]);
  21. }while(mat[i][j]<=0);
  22. }
  23. mat[i][8]=mat[i][1]+mat[i][2]+mat[i][3]+mat[i][4]+mat[i][5]+mat[i][6]+mat[i][7];
  24. total=total+mat[i][8];
  25. if(mat[i][8]>mayor){
  26. mayor=mat[i][8];
  27. x=i;
  28. }
  29. system("cls");
  30. }
  31. printf("La vaca que produjo mas leche fue la #%d \n",x);
  32. for(i=1;i<=N;i++){
  33. printf("Vaca #%d = %d lts \n",i, mat[i][8]);
  34. }
  35. printf("\nTotal de produccion: %d lts \n",total);
  36. do{
  37. printf("\n\n Desea continuar? [S/N]: ");
  38. scanf("%s",&value);
  39. }while((value!='S') && (value!='s') && (value!='N') && (value!='n'));
  40. printf("\n");
  41. if(value=='n' || value=='N'){
  42. salir = false;
  43. }
  44. }while(salir==true);
  45. system("PAUSE");
  46.  
  47. return 0;
  48. }
Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines