[C] Numeros a asteriscos

joselichu007

Buenas, haber si me podeis echar una mano con esto, es una tonteria seguro pero no consigo hacerlo, os cuento, tengo que hacer 1 programa que meta de forma aleatoria 30 notas en un array de enteros y despues esas 30 notas cuente cuantas notas hay de cada una. Osea hay 5 dieces, hay 3 nueves..etc.....y lo que no se hacer es la siguiente parte, me pide que ponga por cada notas asteriscos, osea si hay 3 nueves, pues que me visualize 3 asteriscos...la visualizacion tendria que quedar tal q asi:
1:*****
2:**
etc....
Os copio el codigo que tengo, q basicamente eso todo menos esto ultimo:

#include<stdio.h>
#include<conio.h>

void resultados (int notas [30],int nota)
{
int i,x,y;
x=0;


 
 for (i=0;i<30;i++)
 {
     if (notas [i] == nota)
     {
               x = x+1;
               }
               }
               printf("\nEl numero: %i se repite %d veces \n",nota,x);
               
               getch();
               }

main()
{
int notas [30];
int i,x,nota;
i=0;
while (i<30)
{
notas = rand () %11 + 0;
i++;
}
for (x = 0 ; x < 30; x++)
{
printf ("%d",notas[x]);
}
resultados (notas,nota=9);
getch();
}



Muchas gracias!!!

Josepanaero

Te prometo que no tengo ánimo de crear polémica, pero si no sabes hacer esto, la programación no es lo tuyo. No te lo tomes a mal, pero el problema que planteas es increíblemente trivial. Espero por tu bien que nadie te dé la solución hecha. Lo mejor que puedes hacer es estrujarte tú un poco la cabeza, porque si no no vas a llegar muy lejos en esta materia.

Por favor, no te lo tomes a mal, es un consejo y no va con mala intención.

Un saludo.

PD: La primera parte que dices que sí sabes hacer, está mal (al menos el código que has pegado).

Neolukas

A ver a la función unicamente con que le pases el array de notas te vale y luego ya haces las comprobaciones que quieras y si quieres creas otro array dentro de la función para hacer la impresión de asteriscos... Eso ya tú verás.

Es muy sencillito de hacer, inténtalo.

Veo que no es que tengas mal la comprobación es que no te sale pq no lo metes con el comando codigo, imagino, la comprobación según tu codigo sería:

(notas[i] == nota)
Dod-Evers

notas++ es la clave xD

B

Igual he entendido mal pero eso de hacerte una función para averiguar cuántas notas tienes de un tipo me parece una locura, teniendo en cuenta que tendrías que recorrer el array 10 veces (u 11 si tienes 0 en las notas) para saberlas todas.

Te recomiendo un case dentro del for para poder hacerlo de una tirada, guardando las apariciones de cada nota en otro array, por ejemplo.

Respecto a los asteriscos... hombre.. piensa un poco.. se puede hacer con un for xD

joselichu007

#2 No, tranqui no me lo tomo a mal....llevo pensando q la programacion no es lo mio desde que la empece...pero ya toy metido en ello y no me queda otra...asiq tendre q esforzarme....en cuanto al programa, si, la verdad era bastante estupido...Gracias a todos!!

erdanblo

A mi tampoco me gusta mucho la programación, pero estaba aburrido, y me he instalado el Netbeans para tocar un poco.

Al principio lo iba a hacer con switch como dice oip, pero tenía salia mucho código, asi que lo he hecho de otra manera. Aun así se puede ahorror algo de código usando los métodos adecuados (no tenia ganas de ponerme a revisar la API.

También depende de los datos, es posible que te de algún error de fuera de rango (notas por encima de 10 y por debajo de 1). Por lo demás, el array de enteros que le pases, da igual que sea, de 5, 10, o 30 enteros.

private void SacarEstrellitasDeNotas (int Notas[]) {
        // Creo un array de cadenas para añadir las estrellas
        String estrellitas [] = new String[10];

    // Este foreach es para quitar el "null"
    for(int i = 0; i<estrellitas.length;i++) {
        estrellitas[i] = String.valueOf(i+1) + ": ";
    }

    // Voy sacando añadiendo * según el número que aparece.
    for(int n : Notas) {
        estrellitas[n-1] = estrellitas[n-1] + "*";
    }

    // Saco por pantalla
    for(String s : estrellitas) {
        System.out.println(s);
    }
}
joselichu007

#7 Gracias!!!, al final creo que hice algo "similar" pero al final me salio que es lo importante jejeje
Por cierto llevo un rato dándole a un programa de ficheros que no me salia, y al final he conseguido que funcione pero mas bien haciendo un apaño....
El programa trata de leer un fichero, y que cuente el numero de caracteres diferentes que tiene
La ejecución seria tal que así: Hola tiene 4 caracteres diferentes.
Os pongo el código, pero algo me dice que me he ido por el camino mas enrevesado jejeje
Haber si se os ocurre algo, Gracias!!
P.D: Es por mera curiosidad.... :wtf:

RdNN

yo en su dia tube que hacer una piramide y demas figuras en Js xd que tiempos con los * ;D

joselichu007

#9 pufff yo ahora toy que si piramides, cuadrados,...todo figuritas con '*', menos mal que al final pille como eran jejeje

RdNN

si este año empezare 1º de DAI y ya trabajare con codigo base y no codigo web de momento lo he hecho con js y php ahora me tocara con C :D

joselichu007

#11 justo acabo de terminar 1º de DAI yo....o eso espero jejeej, me ha quedado programacion, x eso toy dandole ahora....como no apruebe, me toca repetir...asi que...

RdNN

ajjaja pues yo ahora en septiembre lo empiezo :D

joselichu007

pos a darle, no es muy complicado....mientras no te despistes mucho en programacion (que es lo q me paso a mi jejeej) lo se mas es bastante facil..

RdNN

bien bien que despues me toca la uni :D jajaja

todavia me quedan unos cuantos años de estudio

Dod-Evers

Para el de las estrellitas tendríais que separar el tema de almacenar los datos y su representación.

En vez de como hace erndablo de en cada posición del array meter una cadena de asteriscos, sería meter cuántos tienen esa nota, así tienes un array del tipo:

[0]=0
[1]=4
[2]=3
[3]=1
...

y luego una función para pintarlo en pantalla.

Vamos, lo que se llama separación en capas.

Usuarios habituales