Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Roga

#1
Hola una duda como le doy memoria dinamica a un parametro en una funcion.
el parametro es una matriz.

mi duda es que valor colocar en la segunda llave de nota.
void imprimir(int cedula_valida[],float nota[][],int total);
int main(){
.
.
.
.
.
printf("\n\nIngrese la cantidad de estudiantes de su clase:");
scanf("%d",&total);
nota=(float **)malloc (total*sizeof(float *));
for(alumno=0;alumno<total;alumno++){
nota[alumno]=(float *)malloc(alumno*sizeof(float));
.
.
.
.
.
}


gracias de antemano :D
#2
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:

/*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:");
scanf("%d",&decision);
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):");
fflush(stdin);
scanf("%c",&resp);
printf("\n%s",*nombres_valido[contador]);
contador++;
#ifdef WIN32
system("cls");
#endif
#ifdef LINUX
system("clear");
#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));
system("pause");
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
#3
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:");
scanf("%d",&n);
int numerosa[n];
while(n<=0){
printf("\nValor invalido. Ingrese de nuevo.\nIngrese el numero de valores que desee cargar:");
scanf("%d",&n);
int numerosa[n];
}
printf("\nLista 1.\n\n");
for(vector=1;vector<=n;vector++){
printf("Ingrese el valor %d:",vector);
scanf("%d",&numerosa[vector]);
}
crear(numerosa,n);
printf("\n\n");
system("pause");
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!. :D
#4
Buenas tengo un problemas no quiere entrar en los if`s. Ademas uso funciones porque lo piden en el anunciado de la guia. muchas gracias.
/*Hacer un programa en Lenguaje C que permita cargar dos vectores con cinco números enteros cada uno y determinar lo siguiente: ¿Cuál es el número mayor de los
dos vectores?*/
#include<stdio.h>
void mayor(int numerosa[2][4]);
int main(){
int vector,vectora,numeros[2][4];
printf("Cargue 2 listas de 5 numeros para definir el mayor de cada uno.\n");
for(vector=0;vector<2;vector++){
printf("\n");
for(vectora=0;vectora<5;vectora++){
printf("Cargue el valor %d de la lista %d:",vectora+1,vector+1);
scanf("%d",&numeros[vector][vectora]);
}
}
mayor(numeros);
printf("\n");
system("pause");
return 0;
}
void mayor(int numerosa[2][4]){
int filas,columnas,mayora,mayorb;
mayora=0;
mayorb=0;
for(filas=0;filas<2;filas++){
for(columnas=0;columnas<5;columnas++){
if(filas==0){
if(numerosa[filas][columnas]>numerosa[filas][columnas]){
mayora=numerosa[filas][columnas];
}
}
if(filas==1){
if(numerosa[filas][columnas]>numerosa[filas][columnas]){
mayorb=numerosa[filas][columnas];
}
}
}
}
printf("El valor mayor de la primera lista es=%d.\nEl valor mayor de la segunda lista es=%d.",mayora,mayorb);
}
#5
/*Hacer un programa en Lenguaje C que permita cargar un vector con 10 números enteros y determinar. ¿Cuantos y cuales números se repiten?*/
#include<stdio.h>
void repiten(int numero[]);
int main(){
int numeros[9],vector;
printf("Carge 10 vectores para determinar cuantos y cuales se repiten.");
for(vector=0;vector<10;vector++){
printf("\nIngrese el Valor %d:",vector+1);
scanf("%d",&numeros[vector]);
}
repiten(numeros);
system("pause");
return 0;
}
void repiten(int numero[]){
int vector,vectori,repitientes[9],acumulador,acumuladortotal=0;
for(vector=0;vector<10;vector++){
acumulador=0;
for(vectori=0;vectori<10;vector++){
if(numero[vector]==numero[vectori]){
acumulador+=1;
if(acumulador>1){
acumuladortotal+=1;
repitientes[acumulador]=numero[vector];
}
}
}
}
}


tengo problemas para imprimir cuales son los valores que se repiten. ayuda :C



· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex