[ Foro de C ]

no logro escribir los numeros en el Array

24-Sep-2022 02:26
Invitado (Jorge)
1 Respuestas

Hola buenas, estoy haciendo una tarea donde tengo que hacer que el usuario anote 10 numeros, ver cual es el mayor y cuantos numeros primos hay hasta este, anotandolos en un array y mostrandolos. No logro hacer esto último, si alguien puede checar mi codigo y decirme que me falta o en que fallo se agradece.

#include <stdio.h>
#include <stdlib.h>

int arreglo_i[10]; /*Array inicial que debe rellenar el usuario*/

int *arreglo_d=NULL; /*Array dinamico que se rellenara con los numeros primos*/

int mayor=0;  /*Variable para definir el numero de mayor valor*/

int c=1;  /*variable para la secuencia de numeros*/

int j, numero, primo=0, cuenta=0, cont=0;  /*variables para la funcion "busca_primo"*/

/*Funcion busca_primo*/
void busca_primo(){
for(j=1;j<=numero;j++){
if(numero%j==0){
cont++;
}
}
if (cont==2){
cuenta=cuenta+1;
primo=numero;
}
else{
}
cont=0;
return;
}

int main()
{
//Indicación del tipo de dato utilizable
printf("este programa solo trabaja con numeros enteros y positivos.\n");
//variable de cuenta para pasar por todos los indices del arreglo
int i=0;
//Aqui están las entradas del usuario
while(i<10){
printf("ingrese el numero %i de la lista: ",i+1);
scanf("%i",&arreglo_i[i]);
i=i+1;
}
//verificador del ingreso de valores
printf("\nlos numeros ingresados son: %i, %i, %i, %i, %i, %i, %i, %i, %i, %i \n",arreglo_i[0],arreglo_i[1],arreglo_i[2],arreglo_i[3],arreglo_i[4],arreglo_i[5],arreglo_i[6],arreglo_i[7],arreglo_i[8],arreglo_i[9]);
//reinicio de la variable de los indices y busqueda del mayor valor
for(i=0; i<10; i++){
if(arreglo_i[i]>arreglo_i[mayor]){
mayor= i;
}
}
printf("El mayor numero ingresado es: %i \n",arreglo_i[mayor]);
//buscando el total de numeros primos
while(c<arreglo_i[mayor]){
busca_primo(numero=c);
c=c+1;
}
//definiendo el tamaño del array dinamico
arreglo_d= malloc(sizeof(int)*cuenta);
c=1;
primo=2;
cuenta=0;
arreglo_d[0]=2;
while(c<arreglo_i[mayor]){
busca_primo(numero=c);
if(primo>arreglo_d[c-1]){
arreglo_d[c]=primo;
}
c=c+1;
}
printf("Los numeros primos que hay hasta el %i son: \n",arreglo_i[mayor]);
for(i=0;i<cuenta;i++){
printf(" %i",arreglo_d[i]);
}
return 0;
}


02-Oct-2022 15:48
Invitado (guillermo)

hola jorge

no uses variables globales, no hacen falta y es una MUY mala práctica

cuando recorres números lo lógico es usar un for, que te da la estructura necesaria

cuando introducen el número ya puedes comparar para saber cúal es el mayor

para ver los números que han introducido usa un for, poner 10 valores de un array en un solo print no es funcional, ni legible y es mala práctica

al llamar a busca_primo envias un argumento que en la función no declaras

las variables globales probocan muchos errores y hacen el código ilegible, usa buenas práticas y sobre todo haz código que se pueda entender fácilmente

repetir la busqueda dos veces no es eficiente,  parece que quieren que uses listas, la mas sencilla seria una lista enlazada simple

makigas tiene unos videos donde lo explica muy bien y a demás deja el código muy claro, te dejo el enlace por si quieres verlo:

https://www.makigas.es/series/estructuras-de-datos/listas-enlazadas-teoria
https://www.makigas.es/series/estructuras-de-datos/listas-enlazadas-en-c

te paso una posible solución:

https://www.online-ide.com/t2R8dok9mc

saludos ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)