|
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. //Anunciado del 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.*/ //librerias a usar #include <stdio.h> #include <stdlib.h> #include <string.h> // Prototipo de la funcion int funcion_nombres(char nombres[][20],char nombres_valido[][20],int contador); //funcion main int main(){ //Declaracion de variable char nombres[100][20],nombres_valido[100][20],nombre_mas_caro[20],nombre_mas_barato[20],decision; int cantidad_animal; int valor_animal; int total,costo_total,mas_caro=0,mas_barato=0,contador=0; int verificar_nombres; float promedio; char resp; int insecto=0,peces=0,anfibio=0,reptil=0,mamifero=0,ave=0; do{ printf("\nIngrese el nombre del animal:"); scanf("%s",&nombres [contador ]); if(contador>0){ verificar_nombres=funcion_nombres(nombres,nombres_valido,contador); while(verificar_nombres==0){ printf("\nLo siento animal ya registrado. Ingrese otro animal.\nIngrese el nombre del animal:"); scanf("%s",&nombres [contador ]); verificar_nombres=funcion_nombres(nombres,nombres_valido,contador); } } strcpy(nombres_valido [contador ],nombres [contador ]); printf("\nCuantos animales hay?:"); scanf("%d",&cantidad_animal ); while(cantidad_animal<=0){ printf("\nCantidad debe ser mayor a 0.\nCuantos animales hay?:"); scanf("%d",&cantidad_animal ); } printf("\nPrecio del animal:"); scanf("%d",&valor_animal ); while(valor_animal<0){ printf("\nValor animal debe ser igual o mayor a 0.\nPrecio del animal:"); scanf("%d",&valor_animal ); } do{ printf("\nTipo de animal:\n1.-Insecto\n2.-Pez\n3.-Anfibio\n4.-Reptil\n5.-Mamifero\n6.-Ave\nElige ahora:"); switch(decision){ case 1:insecto++; break; case 2:peces++; break; case 3:anfibio++; break; case 4:reptil++; break; case 5:mamifero++; break; case 6:ave++; break; default:printf("El valor no es correcto\n"); } }while(decision>6); total=+cantidad_animal; costo_total=+valor_animal; if(valor_animal>mas_caro){ mas_caro=valor_animal; strcpy(nombre_mas_caro ,nombres [contador ]); } if(valor_animal<mas_barato){ mas_barato=valor_animal; strcpy(nombre_mas_barato ,nombres [contador ]); } printf("\nDesea ingresar otro animal?(S/N):"); contador++; #ifdef WIN32 #endif #ifdef LINUX #endif }while(resp!='n'&&resp!='N'); //procedimiento promedio=costo_total/contador; return 0; } int funcion_nombres(char nombres[][20],char nombres_valido[][20],int contador){ int resp,vector; for(vector=0;vector<contador;vector++){ if (strcmp(nombres [contador ],nombres_valido [vector ])==0){ resp=0; return resp; } else{ resp=1; } } return resp;
|
|
|
13
|
Programación / Programación C/C++ / Ayuda en lenguaje c con funciones
|
en: 20 Junio 2017, 17:23 pm
|
Buenas 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: /*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.*/ #include <stdio.h> #include <stdlib.h> char funcion_nombres(char nombres[],int contador); int main(){ char nombres[100][20],*nombres_valido[100][30],*nombre_mas_caro[20],*nombre_mas_barato[20],decision; int *cantidad_animal =malloc(sizeof(int)*100); int *valor_animal =malloc(sizeof(int)*100); int total,costo_total,mas_caro=0,mas_barato=0,contador=0; char verificar_nombres; float promedio; char resp; int insecto=0,peces=0,anfibio=0,reptil=0,mamifero=0,ave=0; do{ printf("\nIngrese el nombre del animal:"); scanf("%s",&nombres [contador ]); verificar_nombres=funcion_nombres(*nombres,contador); while(verificar_nombres=='i'){ printf("\nLo siento animal ya registrado. Ingrese otro animal.\nIngrese el nombre del animal:"); scanf("%s",&nombres [contador ]); printf("\n%s",nombres [contador ]); verificar_nombres=funcion_nombres(*nombres,contador); } *nombres_valido[contador]=nombres[contador]; printf("\nCuantos animales hay?:"); scanf("%d",&cantidad_animal [contador ]); while(cantidad_animal[contador]<=0){ printf("\nCantidad debe ser mayor a 0.\nCuantos animales hay?:"); scanf("%d",&cantidad_animal [contador ]); } printf("\nPrecio del animal:"); scanf("%d",&valor_animal [contador ]); while(valor_animal[contador]<0){ printf("\nValor animal debe ser igual o mayor a 0.\nPrecio del animal:"); scanf("%d",&valor_animal [contador ]); } do{ printf("\nTipo de animal:\n1.-Insecto\n2.-Pez\n3.-Anfibio\n4.-Reptil\n5.-Mamifero\n6.-Ave\nElige ahora:"); switch(decision){ case 1:insecto++; break; case 2:peces++; break; case 3:anfibio++; break; case 4:reptil++; break; case 5:mamifero++; break; case 6:ave++; break; default:printf("El valor no es correcto\n"); } }while(decision>6); total=+cantidad_animal[contador]; costo_total=+valor_animal[contador]; if(valor_animal[contador]>mas_caro){ mas_caro=valor_animal[contador]; *nombre_mas_caro=nombres[contador]; } if(valor_animal[contador]<mas_barato){ mas_barato=valor_animal[contador]; *nombre_mas_barato=nombres[contador]; } printf("\nDesea ingresar otro animal?(S/N):"); printf("\n%s",*nombres_valido [contador ]); contador++; #ifdef WIN32 #endif #ifdef LINUX #endif }while(resp!='n'&&resp!='N'); //procedimiento promedio=costo_total/contador; //realloc cantidad_animal cantidad_animal =(int *)realloc(cantidad_animal ,total *sizeof(int)); //realloc *valor_animal valor_animal =(int *)realloc(valor_animal ,costo_total *sizeof(int)); return 0; } char funcion_nombres(char nombres[],int contador){ int vector; char resp; for(vector=0;vector<contador;vector++){ if(nombres[contador]==nombres[vector]){ resp='i'; } else{ resp='d'; } } return(resp); }
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. /*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, además decir cuál de los vectores es más grande y el promedio de los elementos en cada vector.*/ #include <stdio.h> #include <stdlib.h> void crear(int numerosa[],int n); int main(){ int vector,n; 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."); printf("\nIngrese el numero de valores que desee cargar:"); int *numerosa =malloc(sizeof(int)*n ); while(n<=0){ printf("\nValor invalido. Ingrese de nuevo.\nIngrese el numero de valores que desee cargar:"); int *numerosa =malloc(sizeof(int)*n ); } for(vector=0;vector<n;vector++){ printf("Ingrese el valor %d:",vector +1); scanf("%d",&numerosa [vector ]); } crear(numerosa,n); return 0; } void crear(int numerosa[],int n){ int vector,pares,impares,aux,y; float promedioa,promediob,promedioc,suma; char *mayor; promedioa=0; promediob=0; promedioc=0; aux=0; pares=0; impares=0; //contabilizar pares e impares for(vector=0;vector<n;vector++){ y=numerosa[vector]%2; if(y==0){ pares++; } else{ impares++; } } int *numerosb =malloc(sizeof(int)*pares ); int *numerosc =malloc(sizeof(int)*impares ); //crear 2 y 3 pares=0; impares=0; for(vector=0;vector<n;vector++){ y=numerosa[vector]%2; if(y==0){ numerosb[pares]=*(numerosa+vector); pares++; } else{ numerosc[impares]=*(numerosa+vector); impares++; } } // mayor if(pares>impares){ char p[]={'p','a','r'}; mayor=p; } if(pares<impares){ char i[]={'i','m','p','a','r'}; mayor=i; } if(pares==impares){ char ni[]={'n','i','n','g','u','n','a'}; mayor=ni; } //el promedio vector a suma=0; for(vector=0;vector<n;vector++){ suma+=numerosa[vector]; } promedioa=(suma/n); //el promedio vector b if(pares>0){ suma=0; for(vector=0;vector<pares;vector++){ suma+=numerosb[vector]; } promediob=(suma/pares); } //el promedio vector c if(impares>0){ suma=0; for(vector=0;vector<impares;vector++){ suma+=numerosc[vector]; } promedioc=(suma/impares); } //imprimir if(n>0){ printf("\n\nLista 1\t\tLista 2\t\tLista 3"); for(vector=1;vector<=n;vector++){ if(vector<=pares&&vector<=impares){ printf("\n%d\t\t%d\t\t%d",numerosa [vector -1],numerosb [vector -1],numerosc [vector -1]); } if(vector>pares&&vector<=impares){ printf("\n%d\t\t\t\t%d",numerosa [vector -1],numerosc [vector -1]); } if(vector<=pares&&vector>impares){ printf("\n%d\t\t%d\t\t\t",numerosa [vector -1],numerosb [vector -1 ]); } if(vector>pares&&vector>impares){ printf("\n%d\t\t\t\t\t\t",numerosa [vector -1]); } } printf("\nPromedio.\n%.1f\t\t%.1f\t\t%.1f",promedioa ,promediob ,promedioc ); if(*mayor=='p'||*mayor=='i'){ printf("\n\nLa lista mas larga creada es la %s.",mayor ); } else{ printf("\n\nLa lista mas larga creada es %s.",mayor ); } } }
aprendi con este ejercicio malloc y free. Y calcular promedio de ese modo. muchas gracias a todos.
|
|
|
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 /*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, además decir cuál de los vectores es más grande y el promedio de los elementos en cada vector.*/ #include <stdio.h> void crear(int numerosa[],int n); int main(){ int vector,n; 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."); printf("\nIngrese el numero de valores que desee cargar:"); int numerosa[n]; while(n<=0){ printf("\nValor invalido. Ingrese de nuevo.\nIngrese el numero de valores que desee cargar:"); int numerosa[n]; } for(vector=1;vector<=n;vector++){ printf("Ingrese el valor %d:",vector ); scanf("%d",&numerosa [vector ]); } crear(numerosa,n); return 0; } void crear(int numerosa[],int n){ int vector,numerosb[n],numerosc[n],pares,impares,aux,y; float promedioa,promediob,promedioc,suma; char *mayor; promedioa=0; promediob=0; promedioc=0; aux=0; pares=0; impares=0; //crear 2 y 3 for(vector=1;vector<=n;vector++){ y=numerosa[vector]%2; if(y==0){ pares++; numerosb[pares]=numerosa[vector]; } else{ impares++; numerosc[impares]=numerosa[vector]; } } // mayor if(pares>impares){ char p[]={'p','a','r'}; mayor=p; } if(pares<impares){ char i[]={'i','m','p','a','r'}; mayor=i; } if(pares==impares){ char ni[]={'n','i','n','g','u','n','a'}; mayor=ni; } //el promedio vector a aux=0; for(vector=1;vector<=n;vector++){ suma=numerosa[vector]+aux; aux=numerosa[vector]; } promedioa=suma/n; //el promedio vector b if(pares>0){ aux=0; for(vector=1;vector<=pares;vector++){ suma=numerosb[vector]+aux; aux=numerosb[vector]; } promediob=suma/pares; } //el promedio vector c if(impares>0){ aux=0; for(vector=1;vector<=impares;vector++){ suma=numerosc[vector]+aux; aux=numerosc[vector]; } promedioc=suma/impares; } //imprimir if(n>0){ printf("\n\nLista 1\t\tLista 2\t\tLista 3"); for(vector=1;vector<=n;vector++){ if(vector<=pares&&vector<=impares){ printf("\n%d\t\t%d\t\t%d",numerosa [vector ],numerosb [vector ],numerosc [vector ]); } if(vector>pares&&vector<=impares){ printf("\n%d\t\t\t\t%d",numerosa [vector ],numerosc [vector ]); } if(vector<=pares&&vector>impares){ printf("\n%d\t\t%d\t\t\t",numerosa [vector ],numerosb [vector ]); } if(vector>pares&&vector>impares){ printf("\n%d\t\t\t\t\t\t",numerosa [vector ]); } } printf("\nPromedio.\n%.1f\t\t%.1f\t\t%.1f",promedioa ,promediob ,promedioc ); if(*mayor=='p'||*mayor=='i'){ printf("\n\nLa lista mas larga creada es la %s.",mayor ); } else{ printf("\n\nLa lista mas larga creada es %s.",mayor ); } } }
De antemano muchas Gracias!.
|
|
|
|
|
|
|