m0skit0 escribió:También tu agenda tiene un bug, ya que si rellenas toda la agenda y luego borras un contacto que no esté al final, al introducir uno nuevo, simplemente ni aparecerá, ya que lo escribirías fuera de la memoria de tu programa, corrompiendo tu programa, otros o a saber el qué Esto te lo digo sin haberlo probado, pero puedes probarlo y ver lo que te estoy diciendo.
Lo he probado en Windows y funciona. Relleno todos los huecos, borro uno que no sea el último, añado uno nuevo y funciona. Eso de corromper me llamaba la atención...
Perdón por la inactividad, pero ya tratare de estar mas activo en adelante, voy a revisar la agenda para solucionar el bug, por ahora dejo el ejercicio 1 , el 2° me falta sacar la moda.
case 2: printf("Introduce el numero de conctaco a cosultar: "); scanf("%d", &puesto); printf("Nombre de conctacto:%s\nTel.%d\n\n", datoscont[puesto].nombre, datoscont[puesto].numero); break;
case 3: printf("Numero de conctacto que desea editar: "); scanf("%d", &puesto); printf("\nNuevo nombre de conctacto: "); scanf("%s", &datoscont[puesto].nombre); printf("\nNuevo numero telefonico: "); scanf("%d", &datoscont[puesto].numero); break;
case 4: printf("Numero de conctacto que desea eliminar: "); scanf("%d", &puesto); strcpy(datoscont[puesto].nombre, "VACIO"); datoscont[puesto].numero = 0; printf("\nNumero borrado.\n"); fullcontactos--; break;
case 5: printf("Aplicacion terminada.\n"); activo = 0; break;
default: printf("\"ERROR\"opcion no valida.\n"); }
}
while(activo == 1);
return 0; }
PD: El formato se me volvió a desacomodar al enviar, no se si eso pase por el tamaño del texto o quien sabe, espero que no le reste demasiada legibilidad.
//Versión del Pallacus. Si i siempre empieza siendo 1 podemos ahorrarno el trabajo de comprobar si cada número es par e ir metiendo todos los números alternativamente en cada vector. #include <stdio.h> int main(int argc, char* argv[]) { int i = 1, j = 0, k = 0; // Dos vectores de 10 enteros cada uno int pares[10]; int impares[10]; // Recorremos los números desde el 1 hasta el 20 (ambos inclusive) while ( i <= 20 ) { impares[k++] = i; i++; pares[j++] = i; i++; } // Imprimimos el vector de pares for (i=0; i<10; i++) printf("%d ", pares[i]); printf("\n"); // Imprimimos el vector de impares for (i=0; i<10; i++) printf("%d ", impares[i]); printf("\n"); return 0; }
int main(int argc, char* argv[]) { //Definimos los vectores y las variables. int vectores[50]; int modas[100]={0}; int mayor = 0, menor = 0, moda = 0, total = 0, posicion_media = -1; int media, i;
//Inicializamos el generador de numeros "aleatorios". srand(time(NULL));
//Llenamos vectores de números al azar. A medida que se generan los números los comparamos y guardamos la posición de mayor y del menor. También vamos calculando el total para calcular la media y vamos contando cuantas veces se repite cada número. for(i = 0; i < 50; i++) { vectores[i] = (rand() % 100); if (vectores[i] > vectores[mayor]) { mayor = i; } if (vectores[i] < vectores[menor]) { menor = i; } total = total + vectores[i]; modas[vectores[i]]++; }
//Calculamos la media. media = (total / 50); for(i = 0; i < 50; i++) { if (vectores[i] == media) { posicion_media = i; } }
//Calculamos la moda. for(i = 0; i < 100; i++) { if (modas[i] > modas[moda]) { moda = i; } }
//Imprimimos un montón de cosas.
printf("\n Los valores del vector son: ");
for(i = 0; i < 50; i++) { if ((i % 10) == 0) printf("\n "); printf("%2.d, ", vectores[i]); }
printf("\n "); printf("\n El mayor de ellos es el %dº: %d.", (mayor +1), vectores[mayor]); printf("\n El menor de ellos es el %dº: %d.", (menor +1), vectores[menor]); printf("\n La media de los elementos del vector es: %d. ", media); //Si algún vector coincide con la media lo imprimimos. if (posicion_media >= 0) { printf("Y la podemos encontrar en la posicion %d", (posicion_media +1)); } printf("\n El número que está de moda es el: %d. Y se repite en las posiciones: ", moda); //Buscamos los vectores con el valor de moda y los imprimimos. for(i = 0; i < 50; i++) { if (moda == vectores[i]) { printf("%d, ", (i + 1)); } } printf("\n\n ");
return 0; }
Dejo también el tercero: Vale, vale, voy a ordenarlos también de mayor a menor sin hacer trampa XD
//Ordenar los valores de un vector #include <stdio.h> #include <time.h>
int main(int argc, char* argv[]) { //Definimos los vectoreses y las variables. int vectores[50] = {99}; int i, j, k, numero;
//Inicializo el generador de numeros "aleatorios". srand(time(NULL));
//Lleno el vectores de números al azar. A medida que se generan los números los comparamos y guardamos ordenadamente. for(i = 0; i < 50; i++) { numero = (rand() % 100); j = 0; while(numero > vectores[j]) { j++; } for(k = i; k >= j; k--) { vectores[k+1] = vectores[k]; } vectores[j] = numero; }
//imprimimos el vector entero de menor a mayor. printf("\n Los valores del vector, de menor a mayor son: ");