Ayuda con un array por favor?

Iniciado por elignah, 15 Marzo 2016, 05:28 AM

0 Miembros y 2 Visitantes están viendo este tema.

elignah

Bueno gente, soy nuevo en el foro, como andan? Vengo a plantearles una pequeña duda que tengo con el tema arrays.
Les dejo la consigna que lo puede explicar mejor que yo:

Escribe un programa que lea diez enteros comprendidos entre 1 y 10, los almacene en
un vector y escriba por pantalla la cantidad de elementos de cada número que contiene.
Ejemplo: Dado el siguiente vector [2, 2, 2, 3, 3, 4, 4, 4, 7, 7]
La salida producida sería:
Existen 3 elementos del número 2
Existen 2 elementos del número 3
Existen 3 elementos del número 4
Existen 2 elementos del número 7


ES PROGRAMACION EN C, aclaro, y estoy usando el DEV C ++.
Estoy hace un par de horas intentando y no me sale che... espero que alguno me pueda ayudar, seguramente sea una boludez.

Me quedo despues de esta parte:

#include <stdio.h>

int main () {

int i, num, cont = 0;
int arre[10];

for (i=0;i<10;i++)
{
printf ("Ingrese valor %d del arreglo:" ,i+1);
scanf ("%d", &arre[i]);

}

Pongo los 10 valores del array, pero despues no se como compararlos para que me diga como esta en la consigna!
Desde ya, muchas gracias!

MOD EDIT: Usar etiquetas GeSHi.

r00t31

Re:
#1
Puedes comenzar por ordenar tu arreglo por ejemplo con el metodo de la burbuja

for(i=0;i<9;i++){
   for(j=0;j<10;j++){
      if(arre[j]>arre[j+1]){
         tem = arre[j];
         arre[j] = arre[j+1];
         arre[j+1] = tem;
         }
      }
  }

Ahora que ya esta ordenado ya puedes imprimir

n=1;
for(i=1;i<10;i++){
   if(arre[i-1] != arre[i])
      printf("Existen %d elementos del numero %d",n,arre[i-1]);
   else
      n++;
}

Solo declara las variables que no esten en tu codigo inicial, aunque no lo corri para comprobarlo espero te sirva, yo tambien soy nuevo en el foro pero espero que no te hayas unido solo para que te solucionen la tarea ;) suerte
Saludos!!!

Enviado desde mi LG-H542 mediante Tapatalk

MOD EDIT: Usar etiquetas GeSHi.

elignah

#2
Muchas gracias!!! Y no es tarea, simplemente me estoy iniciando en la programación por mi cuenta. Todavía no empecé a estudiar en una universidad. Falta poquito para eso pero por.ahora estoy por mi cuenta.

Pero tengo un problema, soy nuevito en la programacion por si no se dieron cuenta. Cuando pongo el codigo en el dev c++ me dan errores, warnings, y funciones no declaradas, cuando las declaro, no consigo el objetivo de la consigna!
Les dejo una captura, como les repito, soy nuevo en el tema!

FALTA EL #include y el intmain en la imagen pero estan.



Gracias!

MOD EDIT: Ajuste de imagen a un tamaño aceptable.

r00t31

#3
Ok que bueno que te interese la programación, mira este es el codigo, si eres nuevo y no comprendes alguna parte te recomiendo mejor preguntar, lo programe en linux y se supone que debe funcionar pero a veces con mis compañeros de la escuela el devc++ no corre algunos codigos creo que por el compilador pero ese no es el tema espero y funcione al 100

#include<stdio.h>
int main(){
int i,j,n,tem;
printf("Cuantos numeros desea introducir\n");
scanf("%d",&n);
int Array[n];
for(i=0;i<n;i++){
printf("Ingrese la cantidad No, %d\n",i+1);
scanf("%d",&Array[i]);
}
for(i=0;i<n-1;i++){
for(j=0;j<n;j++){
if(Array[j]>Array[j+1]){
tem = Array[j];
Array[j] = Array[j+1];
Array[j+1] = tem;
}
}
}
tem = 1;
for(i=1;i<=n;i++){
if(Array[i] != Array[i-1]){
printf("Existen %d elementos del numero %d\n",tem,Array[i-1]);
tem = 1;
}
else
tem++;
}
return (0);
}


Espero que te sirva, ahora si lo corri para asegurarme que funcione



MOD EDIT: Usar etiquetas GeSHi!!!

r00t31

Agrege que puedas preguntar cuantos numeros deseas introducir, saludos!!

MAFUS

Elginah, el error que tienes marcado en rojo es que comparas el valor de algo que se guarda en el array con la dirección de inicio de ese array.
El nombre de un array devuelve siempre su dirección de inicio, para acceder a un valor que contenga, aunque sea la primera posición debes dereferenciarlo, ya sea con notación de puntero, ya sea con subíndices (notación de array).

elignah

#6
Lo pude solucionar, al parecer era el dev c++ que me daba el error. Ahora estoy usando el codeblocks y perfecto! Muchas gracias a los dos!!!
---------



PD: Disculpa si te molesto querido r00t31, o a quien corresponda, pero hago 4 preguntas:

1- Por que usaste el metodo de la burbuja en la mitad del codigo?
2- Por que usas i-1 y j+1??? Cual es la finalidad de esto? Tengo muchisima intriga
3- Por que pusiste un mayor (>) en esta parte?
if(Array[j]>Array[j+1]){
Y ALGO QUE NO ENTIENDO EN ESTA PARTE ES: COMO UN NUMERO VA A SER MAYOR QUE ESE NUMERO +1??? No significa eso?
4- Que significa este if? Esta esta relacionada con la 2. A q hace referencia j y j+1?
if(Array[i] != Array[i-1]){


No entendi eso. Me interesa muchisimo! Por eso quiero despejarme todas las dudas que tengo!
Por favor que alguien me ayudee!!!