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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 [2] 3
11  Programación / Programación C/C++ / Re: Ayuda en lenguaje c con funciones en: 21 Junio 2017, 00:57 am
Ya logre lo de los nombres.
Código
  1. //Anunciado del ejercicio.
  2. /*Una tienda de mascotas desea un programa para guardar los nombre en un vector, la cantidad en otro y el valor en otro, además que imprima la relación de los animales,
  3. la cantidad total, el costo de todos los animales y su valor promedio, que animal es más costoso y cual es más barato.*/
  4.  
  5. //librerias a usar
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9. // Prototipo de la funcion
  10. int funcion_nombres(char nombres[][20],char nombres_valido[][20],int contador);
  11. //funcion main
  12. int main(){
  13. //Declaracion de variable
  14. char nombres[100][20],nombres_valido[100][20],nombre_mas_caro[20],nombre_mas_barato[20],decision;
  15. int cantidad_animal;
  16. int valor_animal;
  17. int total,costo_total,mas_caro=0,mas_barato=0,contador=0;
  18. int verificar_nombres;
  19. float promedio;
  20. char resp;
  21. int insecto=0,peces=0,anfibio=0,reptil=0,mamifero=0,ave=0;
  22. do{
  23. printf("\nIngrese el nombre del animal:");
  24. scanf("%s",&nombres[contador]);
  25. if(contador>0){
  26. verificar_nombres=funcion_nombres(nombres,nombres_valido,contador);
  27. while(verificar_nombres==0){
  28. printf("\nLo siento animal ya registrado. Ingrese otro animal.\nIngrese el nombre del animal:");
  29. scanf("%s",&nombres[contador]);
  30. verificar_nombres=funcion_nombres(nombres,nombres_valido,contador);
  31. }
  32. }
  33. strcpy(nombres_valido[contador],nombres[contador]);
  34. printf("\nCuantos animales hay?:");
  35. scanf("%d",&cantidad_animal);
  36. while(cantidad_animal<=0){
  37. printf("\nCantidad debe ser mayor a 0.\nCuantos animales hay?:");
  38. scanf("%d",&cantidad_animal);
  39. }
  40. printf("\nPrecio del animal:");
  41. scanf("%d",&valor_animal);
  42. while(valor_animal<0){
  43. printf("\nValor animal debe ser igual o mayor a 0.\nPrecio del animal:");
  44. scanf("%d",&valor_animal);
  45. }
  46. do{
  47. printf("\nTipo de animal:\n1.-Insecto\n2.-Pez\n3.-Anfibio\n4.-Reptil\n5.-Mamifero\n6.-Ave\nElige ahora:");
  48. scanf("%d",&decision);
  49. switch(decision){
  50. case 1:insecto++;
  51. break;
  52. case 2:peces++;
  53. break;
  54. case 3:anfibio++;
  55. break;
  56. case 4:reptil++;
  57. break;
  58. case 5:mamifero++;
  59. break;
  60. case 6:ave++;
  61. break;
  62. default:printf("El valor no es correcto\n");
  63. }
  64. }while(decision>6);
  65. total=+cantidad_animal;
  66. costo_total=+valor_animal;
  67. if(valor_animal>mas_caro){
  68. mas_caro=valor_animal;
  69. strcpy(nombre_mas_caro,nombres[contador]);
  70. }
  71. if(valor_animal<mas_barato){
  72. mas_barato=valor_animal;
  73. strcpy(nombre_mas_barato,nombres[contador]);
  74. }
  75. printf("\nDesea ingresar otro animal?(S/N):");
  76. fflush(stdin);
  77. scanf("%c",&resp);
  78. contador++;
  79. #ifdef WIN32
  80. system("cls");
  81. #endif
  82. #ifdef LINUX
  83. system("clear");
  84. #endif
  85. }while(resp!='n'&&resp!='N');
  86. //procedimiento
  87. promedio=costo_total/contador;
  88. system("pause");
  89. return 0;
  90. }
  91.  
  92. int funcion_nombres(char nombres[][20],char nombres_valido[][20],int contador){
  93. int resp,vector;
  94. for(vector=0;vector<contador;vector++){
  95. if (strcmp(nombres[contador],nombres_valido[vector])==0){
  96.     resp=0;
  97.     return resp;
  98.   }
  99.   else{
  100.   resp=1;
  101. }
  102. }
  103. return resp;
  104.  
12  Programación / Programación C/C++ / Re: Ayuda en lenguaje c con funciones en: 20 Junio 2017, 17:45 pm
Ya compile pero voy por pasos y no me funciona la funcion que compara los nombres.
13  Programación / Programación C/C++ / Ayuda en lenguaje c con funciones en: 20 Junio 2017, 17:23 pm
Buenas :D foro. estoy aprendiendo lenguaje c por mi cuenta y consegui una guia de ejercicios y me consegui este ejercicio.

Una tienda de mascotas desea un programa para guardar los nombre en un vector, la cantidad en otro y el valor en otro, además que imprima la relación de los animales,
la cantidad total, el costo de todos los animales y su valor promedio, que animal es más costoso y cual es más barato.

lo prosegui a hacer el codigo pero quiero que si se coloca un nombre que ya se introdujo entre en un while para que lo cambie, ademas que tengo que guardarlo por caracteristicas(anfibio,pez,etc).  Entonces tengo inconvenientes con el codigo de comparacion de nombres y no e pensado nada para lo de las caracteristicas.

Notese hasta hora se la biblioteca stdio.h y realloc y malloc de stdlib.h aqui el codigo:

Código
  1. /*Una tienda de mascotas desea un programa para guardar los nombre en un vector, la cantidad en otro y el valor en otro, además que imprima la relación de los animales,
  2. la cantidad total, el costo de todos los animales y su valor promedio, que animal es más costoso y cual es más barato.*/
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. char funcion_nombres(char nombres[],int contador);
  6. int main(){
  7. char nombres[100][20],*nombres_valido[100][30],*nombre_mas_caro[20],*nombre_mas_barato[20],decision;
  8. int *cantidad_animal=malloc(sizeof(int)*100);
  9. int *valor_animal=malloc(sizeof(int)*100);
  10. int total,costo_total,mas_caro=0,mas_barato=0,contador=0;
  11. char verificar_nombres;
  12. float promedio;
  13. char resp;
  14. int insecto=0,peces=0,anfibio=0,reptil=0,mamifero=0,ave=0;
  15. do{
  16. printf("\nIngrese el nombre del animal:");
  17. scanf("%s",&nombres[contador]);
  18. verificar_nombres=funcion_nombres(*nombres,contador);
  19. while(verificar_nombres=='i'){
  20. printf("\nLo siento animal ya registrado. Ingrese otro animal.\nIngrese el nombre del animal:");
  21. scanf("%s",&nombres[contador]);
  22. printf("\n%s",nombres[contador]);
  23. verificar_nombres=funcion_nombres(*nombres,contador);
  24. }
  25. *nombres_valido[contador]=nombres[contador];
  26. printf("\nCuantos animales hay?:");
  27. scanf("%d",&cantidad_animal[contador]);
  28. while(cantidad_animal[contador]<=0){
  29. printf("\nCantidad debe ser mayor a 0.\nCuantos animales hay?:");
  30. scanf("%d",&cantidad_animal[contador]);
  31. }
  32. printf("\nPrecio del animal:");
  33. scanf("%d",&valor_animal[contador]);
  34. while(valor_animal[contador]<0){
  35. printf("\nValor animal debe ser igual o mayor a 0.\nPrecio del animal:");
  36. scanf("%d",&valor_animal[contador]);
  37. }
  38. do{
  39. printf("\nTipo de animal:\n1.-Insecto\n2.-Pez\n3.-Anfibio\n4.-Reptil\n5.-Mamifero\n6.-Ave\nElige ahora:");
  40. scanf("%d",&decision);
  41. switch(decision){
  42. case 1:insecto++;
  43. break;
  44. case 2:peces++;
  45. break;
  46. case 3:anfibio++;
  47. break;
  48. case 4:reptil++;
  49. break;
  50. case 5:mamifero++;
  51. break;
  52. case 6:ave++;
  53. break;
  54. default:printf("El valor no es correcto\n");
  55. }
  56. }while(decision>6);
  57. total=+cantidad_animal[contador];
  58. costo_total=+valor_animal[contador];
  59. if(valor_animal[contador]>mas_caro){
  60. mas_caro=valor_animal[contador];
  61. *nombre_mas_caro=nombres[contador];
  62. }
  63. if(valor_animal[contador]<mas_barato){
  64. mas_barato=valor_animal[contador];
  65. *nombre_mas_barato=nombres[contador];
  66. }
  67. printf("\nDesea ingresar otro animal?(S/N):");
  68. fflush(stdin);
  69. scanf("%c",&resp);
  70. printf("\n%s",*nombres_valido[contador]);
  71. contador++;
  72. #ifdef WIN32
  73. system("cls");
  74. #endif
  75. #ifdef LINUX
  76. system("clear");
  77. #endif
  78.  
  79. }while(resp!='n'&&resp!='N');
  80. //procedimiento
  81. promedio=costo_total/contador;
  82. //realloc cantidad_animal
  83. cantidad_animal=(int *)realloc(cantidad_animal,total*sizeof(int));
  84. //realloc *valor_animal
  85. valor_animal=(int *)realloc(valor_animal,costo_total*sizeof(int));
  86. system("pause");
  87. return 0;
  88. }
  89.  
  90. char funcion_nombres(char nombres[],int contador){
  91. int vector;
  92. char resp;
  93. for(vector=0;vector<contador;vector++){
  94. if(nombres[contador]==nombres[vector]){
  95. resp='i';
  96. }
  97. else{
  98. resp='d';
  99. }
  100. }
  101. return(resp);
  102. }

Me pueden decir donde hay errores de syntaxis y que biblioteca podria incluir. de antemano gracias
14  Programación / Programación C/C++ / Re: Ayuda errores en codigo en lenguaje c. en: 2 Junio 2017, 02:19 am
Gracias! Asi quedo el codigo final.
Código
  1. /*Cargar un vector de “n” posiciones con numero enteros, a partir de este crear 2 vectores; uno con los números pares y el otro con los numero impares,
  2. además decir cuál de los vectores es más grande y el promedio de los elementos en cada vector.*/
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. void crear(int numerosa[],int n);
  6. int main(){
  7. int vector,n;
  8. printf("Cargue 1 lista para crear 2 nuevas con los numeros pares e impares y decir cual vector es mas grande y el promedio de ambos.");
  9. printf("\nIngrese el numero de valores que desee cargar:");
  10. scanf("%d",&n);
  11. int *numerosa=malloc(sizeof(int)*n);
  12. while(n<=0){
  13. printf("\nValor invalido. Ingrese de nuevo.\nIngrese el numero de valores que desee cargar:");
  14. scanf("%d",&n);
  15. int *numerosa=malloc(sizeof(int)*n);
  16. }
  17. printf("\nLista 1.\n\n");
  18. for(vector=0;vector<n;vector++){
  19. printf("Ingrese el valor %d:",vector+1);
  20. scanf("%d",&numerosa[vector]);
  21. }
  22. crear(numerosa,n);
  23. printf("\n\n");
  24. system("pause");
  25. return 0;
  26. }
  27. void crear(int numerosa[],int n){
  28. int vector,pares,impares,aux,y;
  29. float promedioa,promediob,promedioc,suma;
  30. char *mayor;
  31. promedioa=0;
  32. promediob=0;
  33. promedioc=0;
  34. aux=0;
  35. pares=0;
  36. impares=0;
  37. //contabilizar pares e impares
  38. for(vector=0;vector<n;vector++){
  39. y=numerosa[vector]%2;
  40. if(y==0){
  41. pares++;
  42. }
  43. else{
  44. impares++;
  45. }
  46. }
  47. int *numerosb=malloc(sizeof(int)*pares);
  48. int *numerosc=malloc(sizeof(int)*impares);
  49. //crear 2 y 3
  50. pares=0;
  51. impares=0;
  52. for(vector=0;vector<n;vector++){
  53. y=numerosa[vector]%2;
  54. if(y==0){
  55. numerosb[pares]=*(numerosa+vector);
  56. pares++;
  57. }
  58. else{
  59. numerosc[impares]=*(numerosa+vector);
  60. impares++;
  61. }
  62. }
  63. // mayor
  64. if(pares>impares){
  65. char p[]={'p','a','r'};
  66. mayor=p;
  67. }
  68. if(pares<impares){
  69. char i[]={'i','m','p','a','r'};
  70. mayor=i;
  71. }
  72. if(pares==impares){
  73. char ni[]={'n','i','n','g','u','n','a'};
  74. mayor=ni;
  75. }
  76. //el promedio vector a
  77. suma=0;
  78. for(vector=0;vector<n;vector++){
  79. suma+=numerosa[vector];
  80. }
  81. promedioa=(suma/n);
  82. //el promedio vector b
  83. if(pares>0){
  84. suma=0;
  85. for(vector=0;vector<pares;vector++){
  86. suma+=numerosb[vector];
  87. }
  88. promediob=(suma/pares);
  89. }
  90. //el promedio vector c
  91. if(impares>0){
  92. suma=0;
  93. for(vector=0;vector<impares;vector++){
  94. suma+=numerosc[vector];
  95. }
  96. promedioc=(suma/impares);
  97. }
  98. //imprimir
  99. if(n>0){
  100. printf("\n\nLista 1\t\tLista 2\t\tLista 3");
  101. for(vector=1;vector<=n;vector++){
  102. if(vector<=pares&&vector<=impares){
  103. printf("\n%d\t\t%d\t\t%d",numerosa[vector-1],numerosb[vector-1],numerosc[vector-1]);
  104. }
  105. if(vector>pares&&vector<=impares){
  106. printf("\n%d\t\t\t\t%d",numerosa[vector-1],numerosc[vector-1]);
  107. }
  108. if(vector<=pares&&vector>impares){
  109. printf("\n%d\t\t%d\t\t\t",numerosa[vector-1],numerosb[vector-1
  110. ]);
  111. }
  112. if(vector>pares&&vector>impares){
  113. printf("\n%d\t\t\t\t\t\t",numerosa[vector-1]);
  114. }
  115. }
  116. printf("\nPromedio.\n%.1f\t\t%.1f\t\t%.1f",promedioa,promediob,promedioc);
  117. if(*mayor=='p'||*mayor=='i'){
  118. printf("\n\nLa lista mas larga creada es la %s.",mayor);
  119. }
  120. else{
  121. printf("\n\nLa lista mas larga creada es %s.",mayor);
  122. }
  123. }
  124. free(numerosa);
  125. free(numerosb);
  126. free(numerosc);
  127. }

aprendi con este ejercicio malloc y free. Y calcular promedio de ese modo. muchas gracias a todos.
15  Programación / Programación C/C++ / Re: Ayuda errores en codigo en lenguaje c. en: 2 Junio 2017, 01:59 am
No entendi esta parte.
Citar
Mejor así:
Código
      if((numerosa[vector] & 1)==0){
                   ...

pero si acomode el error en el promedio. tambien libere la memoria de numeroa , numerob y numeroc, con
Código
  1. free(numerosa);
  2. free(numerosb);
  3. free(numerosc);
16  Programación / Programación C/C++ / Re: Ayuda errores en codigo en lenguaje c. en: 30 Mayo 2017, 00:50 am
Gracias. por lo que lei se puede programar basicamente sin malloc pero seria aconstumbrarse a programar mal XD. gracias por el tip tambien lei que por cada malloc hay que usar un free como seria eso?. Sigo teniendo el error de los promedios.
17  Programación / Programación C/C++ / Re: Ayuda errores en codigo en lenguaje c. en: 29 Mayo 2017, 23:40 pm
eso lo hize porque si coloco que pares e impares me inicialize en -1 para que cuando entre en el if empieze en 0, me da error.
18  Programación / Programación C/C++ / Re: Ayuda errores en codigo en lenguaje c. en: 29 Mayo 2017, 20:02 pm
despues de tanto averiguar sigo sin entender :(. alguna guia que me recomiendes? o el codigo de forma correcta a ver si lo agarro de ejemplo.
19  Programación / Programación C/C++ / Re: Ayuda errores en codigo en lenguaje c. en: 28 Mayo 2017, 19:24 pm
ty. Ya investigo sobre el tema y contesto si me resulto. Y sobre el error de los promedios?.
20  Programación / Programación C/C++ / Ayuda errores en codigo en lenguaje c. en: 28 Mayo 2017, 02:13 am
Buenas tengo un error en mi codigo si coloco que n(valores) es igual 1 el promediob = a basura. ademas que los promedios no me dan.
al depurar me da que la suma incrementa el numero en 2 cuando no es asi. aqui el codigo
Código
  1. /*Cargar un vector de “n” posiciones con numero enteros, a partir de este crear 2 vectores; uno con los números pares y el otro con los numero impares,
  2. además decir cuál de los vectores es más grande y el promedio de los elementos en cada vector.*/
  3. #include <stdio.h>
  4. void crear(int numerosa[],int n);
  5. int main(){
  6. int vector,n;
  7. printf("Cargue 1 lista para crear 2 nuevas con los numeros pares e impares y decir cual vector es mas grande y el promedio de ambos.");
  8. printf("\nIngrese el numero de valores que desee cargar:");
  9. scanf("%d",&n);
  10. int numerosa[n];
  11. while(n<=0){
  12. printf("\nValor invalido. Ingrese de nuevo.\nIngrese el numero de valores que desee cargar:");
  13. scanf("%d",&n);
  14. int numerosa[n];
  15. }
  16. printf("\nLista 1.\n\n");
  17. for(vector=1;vector<=n;vector++){
  18. printf("Ingrese el valor %d:",vector);
  19. scanf("%d",&numerosa[vector]);
  20. }
  21. crear(numerosa,n);
  22. printf("\n\n");
  23. system("pause");
  24. return 0;
  25. }
  26. void crear(int numerosa[],int n){
  27. int vector,numerosb[n],numerosc[n],pares,impares,aux,y;
  28. float promedioa,promediob,promedioc,suma;
  29. char *mayor;
  30. promedioa=0;
  31. promediob=0;
  32. promedioc=0;
  33. aux=0;
  34. pares=0;
  35. impares=0;
  36. //crear 2 y 3
  37. for(vector=1;vector<=n;vector++){
  38. y=numerosa[vector]%2;
  39. if(y==0){
  40. pares++;
  41. numerosb[pares]=numerosa[vector];
  42. }
  43. else{
  44. impares++;
  45. numerosc[impares]=numerosa[vector];
  46. }
  47. }
  48. // mayor
  49. if(pares>impares){
  50. char p[]={'p','a','r'};
  51. mayor=p;
  52. }
  53. if(pares<impares){
  54. char i[]={'i','m','p','a','r'};
  55. mayor=i;
  56. }
  57. if(pares==impares){
  58. char ni[]={'n','i','n','g','u','n','a'};
  59. mayor=ni;
  60. }
  61. //el promedio vector a
  62. aux=0;
  63. for(vector=1;vector<=n;vector++){
  64. suma=numerosa[vector]+aux;
  65. aux=numerosa[vector];
  66. }
  67. promedioa=suma/n;
  68. //el promedio vector b
  69. if(pares>0){
  70. aux=0;
  71. for(vector=1;vector<=pares;vector++){
  72. suma=numerosb[vector]+aux;
  73. aux=numerosb[vector];
  74. }
  75. promediob=suma/pares;
  76. }
  77. //el promedio vector c
  78.  
  79. if(impares>0){
  80. aux=0;
  81. for(vector=1;vector<=impares;vector++){
  82. suma=numerosc[vector]+aux;
  83. aux=numerosc[vector];
  84. }
  85. promedioc=suma/impares;
  86. }
  87. //imprimir
  88. if(n>0){
  89. printf("\n\nLista 1\t\tLista 2\t\tLista 3");
  90. for(vector=1;vector<=n;vector++){
  91. if(vector<=pares&&vector<=impares){
  92. printf("\n%d\t\t%d\t\t%d",numerosa[vector],numerosb[vector],numerosc[vector]);
  93. }
  94. if(vector>pares&&vector<=impares){
  95. printf("\n%d\t\t\t\t%d",numerosa[vector],numerosc[vector]);
  96. }
  97. if(vector<=pares&&vector>impares){
  98. printf("\n%d\t\t%d\t\t\t",numerosa[vector],numerosb[vector]);
  99. }
  100. if(vector>pares&&vector>impares){
  101. printf("\n%d\t\t\t\t\t\t",numerosa[vector]);
  102. }
  103. }
  104. printf("\nPromedio.\n%.1f\t\t%.1f\t\t%.1f",promedioa,promediob,promedioc);
  105. if(*mayor=='p'||*mayor=='i'){
  106. printf("\n\nLa lista mas larga creada es la %s.",mayor);
  107. }
  108. else{
  109. printf("\n\nLa lista mas larga creada es %s.",mayor);
  110. }
  111. }
  112. }

De antemano muchas Gracias!. :D
Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines