Ayuda programa en C

StRaCciAtElLa

RangoVeterano
Registro
4 Ago 2005
Mensajes
1.215
Reacciones
0
En esto de la programación me considero bastante torpe, y pido ayuda para hacer el siguiente programa. Lo he intentado de mil maneras y no me compila!!


Escribir un programa en ANSI C que a partir de datos numéricos introducidos por el
usuario desde el teclado (números reales 0.0 hasta 10.0 únicamente) los clasifique y
acumule en los tramos: menor que cinco Suspenso; desde cinco hasta seis y medio
Aprobado; desde seis y medio hasta ocho y medio Notable; desde ocho y medio hasta
nueve con nueve Sobresaliente y desde nueve con nueve hasta diez Matrícula de honor.
El programa leerá datos hasta que el usuario decida acabar, entonces el programa
presentará en pantalla el total de datos leídos, los totales parciales de cada tramo y los
porcentajes correspondientes.
El programa deberá:
- Indicar al usuario para qué sirve (por pantalla)
- Indicar al usuario si quiere introducir datos o terminar la sesión.
- Leer dato desde el teclado.
- Clasificarlo y Acumularlo.
- Presentar resultados al final de la sesión.

Gracias
 
Pon el código, petarda. O quieres que te lo hagan desde cero?
 
Vamos, no me jodas. Te piden hacer un programa hiper sencillo que con dos clases de C deberías saber hacerlo y ya quieres que te lo den masticadito. Anda y pon el puto código que llevas hecho y que no compila y vete a pastar al monte.
 
Joder, pero si eso es muy sencillo...

(y si no lo sabes haces, ya sabes: google es tu amigo)
 
JAJAJAJ
JAJAJAJAJAJAJAAJ
JAJAJAJAJAJAJAJAJAJAJJAAJAJAJAJAJAJA


La zorra pedorra d la straciapollas programando en C ?? q sera lo proximo, Perseo anorexico???

Si te han puesto un simple ejercicio en segundo d bachiller te jodes seguro q eres d las tipicas burras inutiles q arrastran las matematicas y la informatica hasta fin d curso y al final lo pasan con 5 pelao gracias a trabajitos orales, mira q no saber hacer ese programa chorra d cuatro lineas ya hay q ser inutil petarda analfabeta vuelve al lugar del q nuca debiste salir: EL CIRCO

ADEMAS DE SER MAS FEA QUE EL OJETE DE OTRO ERES TIENES MENOS NEURONAS QUE UNA CAJA DE ZAPATOS

MUERETE IMBECIL HAZ UN FAVOR AL MUNDO Y SUICIDATE
 
StRaCciAtElLa rebuznó:
En esto de la programación me considero bastante torpe, y pido ayuda para hacer el siguiente programa. Lo he intentado de mil maneras y no me compila!!


Escribir un programa en ANSI C que a partir de datos numéricos introducidos por el
usuario desde el teclado (números reales 0.0 hasta 10.0 únicamente) los clasifique y
acumule en los tramos: menor que cinco Suspenso; desde cinco hasta seis y medio
Aprobado; desde seis y medio hasta ocho y medio Notable; desde ocho y medio hasta
nueve con nueve Sobresaliente y desde nueve con nueve hasta diez Matrícula de honor.
El programa leerá datos hasta que el usuario decida acabar, entonces el programa
presentará en pantalla el total de datos leídos, los totales parciales de cada tramo y los
porcentajes correspondientes.
El programa deberá:
- Indicar al usuario para qué sirve (por pantalla)
- Indicar al usuario si quiere introducir datos o terminar la sesión.
- Leer dato desde el teclado.
- Clasificarlo y Acumularlo.
- Presentar resultados al final de la sesión.

Gracias

Si no sabes hacer eso deja de programar.
 
venga aora decid cuantos le estais babeando por privados mandandole el programa,
si me explicas lo de los totales parciales de cada tramo y los
porcentajes correspondientes quizas te lo haga , es muy facil
 
yo he tenido q hacer eso alguna vez...venia en un libro q seguia el profe q nos lo mandó y...en el libro venia una solución.

lo de los totales parciales es q salga la cantidad de numeros q se han metio en cada tramo y el porcentaje q son con respecto al total de numeros introducidos. poner cuantos suspensos, suficentes en numero y el porcentaje.

de todas formas si no puedes hacer eso programar no es lo tuyo desde luego...bueno quizás la alarma del móvil si q puedas pero al vídeo no llegas equisdé
 
No entiendo muy bien este ejercicio.Tal y como lo planteas tu , no tiene mucho sentido.
Esto tendria sentido si aparte de pasarte unas calificciones, te pasaran los datos de los alumnos, asi almacenarias algo con mas sentido en una lista.
En todo caso, si no necesitas crear una estructura ( si solo necesitas almacenar calificaciones y devolver la especie de resumen de cuantos aprobaos,bienes etc etc tienes ) lo mas sencillo es almacenar solo las calificaciones en un array de reales y simplemente a la hora de mostrar el resumen, lo recorres 5 veces, una contando los menores de 5, otra los menores de 6 y menores de 5 ... y los muestras por pantalla.
Eso es una solucion muy simple a un ejercicio chorra, pero chorra chorra, imagino que no sera eso lo que tienes que hacer y, querran que almacenes alguna estructura en la lista, pero no se...
Pedir datos por memoria y leerlos imagino que sabras..
Saludos cordiales.
 
No está demasiado bien, molaría más si reconociera nombres repetidos , leyera de fichero, etc...

Tampoco he entendido muy bien lo que pedías.


/* El programa pide al usuario, nombres de alumnos y sus correspondientes notas*/


#include <stdio.h> //con esta librería nos bastará para lo necesario
#include <string.h> //no me apetece fabricar un strcmp

#define MAX_NOMBRE 40 //50 letras el nombre + apellidos
#define MAX_NOTAS 20//longitud máxima de palabra para las notas, "suspenso", etc...

// Vamos a definir la estructura de datos que emplearemos para almacenar

typedef struct nodo_nota1{
char nombre[MAX_NOMBRE]; //el nombre y apellidos
float nota; //su nota

struct nodo_nota1 *sig; //puntero al siguiente alumno
}t_alumno;

typedef struct pila_alumnos{ //la pila que contiene a los alumnos
t_alumno *p; //primer alumno de la lista
int total; //número total de alumnos en la pila
}t_clase;

//si se desea cambiar los nombres o interval
typedef struct calif_notas{
char nom[MAX_NOTAS]; // es el nombre que se le da cuando está en [min,max)
float min;
float max;
}t_notas;

t_notas patron[] = { {"Suspenso",.0,5},
{"Aprobado",5,6.5},
{"Notable",6.5,8.5},
{"Sobresaliente",8.5,9},
{"Matrícula de honor",9,10.1} // 10.1 <--- a la persona con 10 no sabría que hacer con él
};

int numero_notas = 5; //deberíamos cambiar este número si cambiamos patron


//Creadores

t_clase* new_clase(){
t_clase *aux;

aux = (t_clase*)malloc(sizeof(t_clase));
aux->p = NULL;
aux->total = 0;

return aux;
}

t_alumno* new_alumno(char *nom,float not){
t_alumno *aux;

aux = (t_alumno*)malloc(sizeof(t_alumno));

sprintf(aux->nombre,"%s",nom);
aux->nota = not;
aux->sig = NULL;

return aux;
}



//Destructores , no vamos a necesitar destruir alumnos

void des_clase(t_clase *c){
t_alumno *aux,*raux;

aux = c->p;

while(aux){ //destruimos todos los alumnos
raux = aux->sig;
free(aux);
aux = raux;
}

free(c); // y la propia pila
}



//Insertar un alumno en una clase

void insertar(t_clase *c,t_alumno *a){
a->sig = c->p;
c->p = a;

c->total++;
}

//mostrar una clase por pantalla
void mostrar(t_clase *c,char *no,int tot){
t_alumno *aux;

printf("-----%s, tiene %d personas que son un %3.2f%% del total\n",no,c->total,(((float)c->total)/((float)tot))*100);
printf("Nombre: Nota:\n");

aux = c->p;

while(aux){
printf("%-40s %3.2f\n",aux->nombre,aux->nota);
aux = aux->sig;
}
printf("\n");
}


int main(int argc,char **argv){

t_clase *principal,*auxiliar;
t_alumno *aaux;
int total_alum;
int bucle;

char a_nombre[MAX_NOMBRE];
float a_nota;

//Mostrar su utilidad
printf("blablablablablabla \n");


//Pedir datos al usuario
//molaría más un do while

principal = new_clase();

printf("Para salir escriba de nombre: fin\n");

printf("Introduce nombre del alumno: ");
scanf(" %[^\n]",a_nombre);
if(strcmp(a_nombre,"fin")){
printf("Introduce su nota: ");
scanf("%f",&a_nota);
}

while(strcmp(a_nombre,"fin")){
insertar(principal,new_alumno(a_nombre,a_nota));

printf("Introduce nombre del alumno: ");
scanf(" %[^\n]",a_nombre);
if(strcmp(a_nombre,"fin")){
printf("Introduce su nota: ");
scanf("%f",&a_nota);
}
}

total_alum = principal->total;

printf("\n\n");
//mostramos el total
mostrar(principal,"Total",total_alum);


//Ahora todas las clasificaciones que hemos defínido en patrón
for(bucle=0;bucle<numero_notas;bucle++){
auxiliar = new_clase();
aaux = principal->p;
while(aaux){

if ((aaux->nota >= patron[bucle].min)&&(aaux->nota < patron[bucle].max))
insertar(auxiliar,new_alumno(aaux->nombre,aaux->nota));

aaux = aaux->sig;
}

mostrar(auxiliar,patron[bucle].nom,total_alum);
des_clase(auxiliar);
}


//liberamos memoria
des_clase(principal);
return(0);
}
 
joder esto es una duda de novato novato.

te vendria bien un manual o algo y empollartelo porque te va a acer falta
 
He ded deciros que ya lo conseguí hacer.

Es normal que sea un nivel bajo, ya que no estudio informatica...


De todas formas, gracias por vuestra ayuda.
 
Elden rebuznó:
No está demasiado bien, molaría más si reconociera nombres repetidos , leyera de fichero, etc...

Tampoco he entendido muy bien lo que pedías.


/* El programa pide al usuario, nombres de alumnos y sus correspondientes notas*/


#include <stdio.h> //con esta librería nos bastará para lo necesario
#include <string.h> //no me apetece fabricar un strcmp

#define MAX_NOMBRE 40 //50 letras el nombre + apellidos
#define MAX_NOTAS 20//longitud máxima de palabra para las notas, "suspenso", etc...

// Vamos a definir la estructura de datos que emplearemos para almacenar

typedef struct nodo_nota1{
char nombre[MAX_NOMBRE]; //el nombre y apellidos
float nota; //su nota

struct nodo_nota1 *sig; //puntero al siguiente alumno
}t_alumno;

typedef struct pila_alumnos{ //la pila que contiene a los alumnos
t_alumno *p; //primer alumno de la lista
int total; //número total de alumnos en la pila
}t_clase;

//si se desea cambiar los nombres o interval
typedef struct calif_notas{
char nom[MAX_NOTAS]; // es el nombre que se le da cuando está en [min,max)
float min;
float max;
}t_notas;

t_notas patron[] = { {"Suspenso",.0,5},
{"Aprobado",5,6.5},
{"Notable",6.5,8.5},
{"Sobresaliente",8.5,9},
{"Matrícula de honor",9,10.1} // 10.1 <--- a la persona con 10 no sabría que hacer con él
};

int numero_notas = 5; //deberíamos cambiar este número si cambiamos patron


//Creadores

t_clase* new_clase(){
t_clase *aux;

aux = (t_clase*)malloc(sizeof(t_clase));
aux->p = NULL;
aux->total = 0;

return aux;
}

t_alumno* new_alumno(char *nom,float not){
t_alumno *aux;

aux = (t_alumno*)malloc(sizeof(t_alumno));

sprintf(aux->nombre,"%s",nom);
aux->nota = not;
aux->sig = NULL;

return aux;
}



//Destructores , no vamos a necesitar destruir alumnos

void des_clase(t_clase *c){
t_alumno *aux,*raux;

aux = c->p;

while(aux){ //destruimos todos los alumnos
raux = aux->sig;
free(aux);
aux = raux;
}

free(c); // y la propia pila
}



//Insertar un alumno en una clase

void insertar(t_clase *c,t_alumno *a){
a->sig = c->p;
c->p = a;

c->total++;
}

//mostrar una clase por pantalla
void mostrar(t_clase *c,char *no,int tot){
t_alumno *aux;

printf("-----%s, tiene %d personas que son un %3.2f%% del total\n",no,c->total,(((float)c->total)/((float)tot))*100);
printf("Nombre: Nota:\n");

aux = c->p;

while(aux){
printf("%-40s %3.2f\n",aux->nombre,aux->nota);
aux = aux->sig;
}
printf("\n");
}


int main(int argc,char **argv){

t_clase *principal,*auxiliar;
t_alumno *aaux;
int total_alum;
int bucle;

char a_nombre[MAX_NOMBRE];
float a_nota;

//Mostrar su utilidad
printf("blablablablablabla \n");


//Pedir datos al usuario
//molaría más un do while

principal = new_clase();

printf("Para salir escriba de nombre: fin\n");

printf("Introduce nombre del alumno: ");
scanf(" %[^\n]",a_nombre);
if(strcmp(a_nombre,"fin")){
printf("Introduce su nota: ");
scanf("%f",&a_nota);
}

while(strcmp(a_nombre,"fin")){
insertar(principal,new_alumno(a_nombre,a_nota));

printf("Introduce nombre del alumno: ");
scanf(" %[^\n]",a_nombre);
if(strcmp(a_nombre,"fin")){
printf("Introduce su nota: ");
scanf("%f",&a_nota);
}
}

total_alum = principal->total;

printf("\n\n");
//mostramos el total
mostrar(principal,"Total",total_alum);


//Ahora todas las clasificaciones que hemos defínido en patrón
for(bucle=0;bucle<numero_notas;bucle++){
auxiliar = new_clase();
aaux = principal->p;
while(aaux){

if ((aaux->nota >= patron[bucle].min)&&(aaux->nota < patron[bucle].max))
insertar(auxiliar,new_alumno(aaux->nombre,aaux->nota));

aaux = aaux->sig;
}

mostrar(auxiliar,patron[bucle].nom,total_alum);
des_clase(auxiliar);
}


//liberamos memoria
des_clase(principal);
return(0);
}

Falta una coma.
 
Elden rebuznó:


Para q coño haces una lista enlazada y cuarentamil estructuras??? matas moscas a cañonazos??? si ES MAS FACIL QUE TODO ESO !!! basta hacer un simple array, llenarlo con los datos q se van lellendo por pantalla y luego recorrerlo un par de veces y sacar las estadisticas

por cierto ya t lo han dicho pero eres un triste por hacer un puto programa a una pava, menudo babas calzonazos q te han parido
 
Dj. EniGmA rebuznó:
Elden rebuznó:


Para q coño haces una lista enlazada y cuarentamil estructuras??? matas moscas a cañonazos??? si ES MAS FACIL QUE TODO ESO !!! basta hacer un simple array, llenarlo con los datos q se van lellendo por pantalla y luego recorrerlo un par de veces y sacar las estadisticas

por cierto ya t lo han dicho pero eres un triste por hacer un puto programa a una pava, menudo babas calzonazos q te han parido

En c no existe el concepto de array jovenzuelo.

Mas facil que eso. Vas sacando las estadisticas a medida que pides datos, es decir, pides una nota, la almacenas en una variable auxiliar y con una estructura de if/else vas incrementando los contadores de suspensos, aprobados... El programa ocuparia un cuarto de la marranada que ha hecho el colegui.

En gijon no teneis ni puta idea, muchos invariantes y chuminadas que no valen para nada. Es un plan de estudios totalmente desfasado.
 
El forzador del ascensor rebuznó:
En c no existe el concepto de array jovenzuelo.

Me he kedado empanao mirando esta frase, nunca habia visto tanto analfabetismo en una sola linea. En C no existen los arrays??? Eso es como decir q en java no existen los objetos...

int array[100]; <------ array unidimensional (o vector) de 100 enteros


donde te perdiste?
 
Dj. EniGmA rebuznó:
El forzador del ascensor rebuznó:
En c no existe el concepto de array jovenzuelo.

Me he kedado empanao mirando esta frase, nunca habia visto tanto analfabetismo en una sola linea. En C no existen los arrays??? Eso es como decir q en java no existen los objetos...

int array[100]; <------ array unidimensional (o vector) de 100 enteros


donde te perdiste?

Me perdi en que eso es un vector, no un array. Que tu los llames igual no quiere decir que sean la misma cosa.



P.D: Analfabeto dice, jajajaja, y encima con ese rango...
 
El forzador del ascensor rebuznó:
Me perdi en que eso es un vector, no un array. Que tu los llames igual no quiere decir que sean la misma cosa.

vector = array unidimensional

no tienes ni puta idea y has echo el ridiculo. a cascarla y la proxima vez t lo piensas dos veces antes d replicarle a un ser superior como yo.

FIN.
 
Atrás
Arriba Pie