Expertos en programación en C, AYUDA, ¡por favor!

Estimados usuarios:

Os pido ayuda con unos ejercicios de programación en C, los cuales me están volviendo totalmente mico. Por eso os agradecería que me echárais una mano. Sé que para algunos esto es facilísimo, pero se ve que soy cortito, y doy a más. Llevo con estos ejercicios días, pero estos 6 ejercicios me están matando, en serio.

Consigo hacer la base del programa (lo que viene a ser declarar las variables) y poco más. Si alguien me echara una mano se lo agradecería, pues además, los tengo que entregar el lunes. Es una hoja con 66 ejercicios, y éstos son los 6 últimos.

Aquí os los dejo citados. Están traducidos del catalán, así que puede que haya algunas cositas sin sentido....


Hacer un programa que lea 5 números y determine la media de los números positivos y de los números negativos.



Hacer un programa para leer las puntuaciones de una clase de informática y contar el número total de aprobados (5 o más grande).



Hacer un programa que calcule la suma de los 20 primeros números pares y el producto de los 20 primeros números impares simultáneamente.



Pide al usuario cuántos números quiere introducir. Entonces, leemos los números enteros (tanto positivos como negativos) y finalmente, le diremos el mayor y el menor de todos los números leídos.



Escribe un programa que muestre una tabla de raíces cuadradas de los números enteros en el cuadro que va desde 2 hasta 10. Utiliza el archivo de "encapçalament" MATH.H para importar la función sqrt(), que calcula la raíz cuadrada de un argumento de tipo doble. Utiliza los controladores de formato %3.0lf y %3.4lf para mostrar los números y sus raíces cuadradas respectivamente.



Escribe el programa que implementa una calculadora simple de cuatro funciones. El programa muestra un menú con cuatro opciones (sumar, restar, multiplicar o dividir). Después de elegir una de las cuatro, pedirá los 2 números. Comprobará en caso de ser una división que no se quiere dividir por 0. Entonces, se representará la opreación con el resultado. Se vuelve a mostrar el menú.



Tela marinera. Por adelantado, os doy las gracias a todos, aunque sólo sea por leerlo. Quien sepa hacer esto, es el amo [mamaaaaa]
1 - Pones una variable que se llame suma con valor 0 al principio, metes un for de 5 iteraciones donde lees el numero y haces suma = suma + numero. Al acabas el for divides suma entre 5 y esa es la media.

2- Pones una variable aprobados con valor 0, pones un while que acabe cuando ya no hay mas alumnos y dentro del while un if(nota>=5) aprobados++.

3- Creas dos variables, pares = 0 e impares = 0, haces un for(i=1;i<41;i++) y dentro del for un if (i%2==0) pares+= i else impares*=i; El i%2 == 0 es para saber cuando un número es par (cuando el resto de su division entre 2 es cero).

4 - Creas una variables mayor y otra menos, lees el numero, haces un for con las iteraciones del numero leido, vas leyendo todos los numeros y controlando el mayor numero y el mayor haciendo un if con cada valor que se lee.

5 - Pues hacer un for de 2 hasta 10 mostrando la raiz de cada numero usando la funcion sqrt(numero) y con los dos formatos que te dan para mostrarlo usando print, fprint o lo que useis.

6 - Muestras un menu cutre diciendo las 4 operaciones, lees un número o una letra, como quieras. Haces un switch con las distintas posibilidades (o muchos if si aun no habeis dado los switch), y ya dependiendo de cada caso haces lo que corresponda, a+b o a-b o a*b o a/b. Para volver a mostrar el menu mete todo el programa dentro de un while() poniendo cualquier condicion chorra para salir, como leer un 0 o algo así.
Joer, ni que fuese tan difícil. Mi c está un poco olvidado pero a grandes rasgos lo que tienes que hacer es algo así:


Hacer un programa que lea 5 números y determine la media de los números positivos y de los números negativos.


1. Un while o for para coger los 5 números
2. Declaras cuatro variables:
- Uno para la suma de los números positivos (sumP)
- Otro para la suma de los negativos (sumN)
- Otra para que cuente el número de positivos (cuentaP)
- Y otra para los negativos (cuentaN)
2. Un while para recorrer los 5 números
- Si el número actual es positivo lo sumas a sumP y aumentas en uno cuentaP.
- Si no, lo mismo para sumN y cuentaN
3. divides sumP/cuentaP y sumN/cuentaN


Hacer un programa para leer las puntuaciones de una clase de informática y contar el número total de aprobados (5 o más grande).


1. Un while para coger los datos
2. Declaras una variable para contar el número de aprobados (cuenta)
3. Un while para recorrer los números
- Si el número es mayor o igual a 5 aumentas en uno "cuenta"


Hacer un programa que calcule la suma de los 20 primeros números pares y el producto de los 20 primeros números impares simultáneamente.


0. Declaras una variable para el número actual (aux), otra para la suma (sum) y otra para la multiplicación (mult)
1. aux = 0; sum = 0; mult = 1;
2. Un while o for de uno hasta 20
- aux = aux +2
- sum = sum + aux;
- mult = mult * (aux + 1);



¿esto te sirve? es que no sé si estoy perdiendo el tiempo...
¡Dios Dios Dios...sois los amos! Ahora mismo me lo miro, que tengo un desorden de mucho cuidado. Voy a hacerlo todo desde 0, porque si viéseis lo que tengo....tela.

¡Mil gracias! Se siguen aceptando ayudas :)

P.D: aquí nadie está tirando el tiempo, os lo aseguro. Toda ayuda es bien recibida ;)
Hola.

Primero decir que creo que hay un hilo oficial de C/C++ en la zona PC. Quizás ahí te puedan ayudar más.

Apenas hice C, y lo que hice lo he olvidado. Pero para el primero puede ser algo asi?:
int i;
int ineg = 0, ipos = 0; // guardamos aquí las sumas respectivas
int nneg = 0, npos = 0; // aquí la cantidad de números positivos o negativos
for (int p =0; p<5; p++){
cin >> i; //no recuerdo E/S en C, pero así es más o menos en C++, ¿no?
if (i>0){ //si positivo
npos++;
ipos = ipos + i;
} //==0 (cuidado, mirate esto si está bien con el problema) o negativos
else{
nneg++;
ineg = ineg + i;
} //fin del for, ya ha leído 5 enteros

int mediapos = ipos / npos;
int medianeg = ineg / nneg;


Bueno, se pueden hacer de mejores formas, y no está en C. Pero supongo q lo puedes adaptar. Quizás esté mal... así que no me responsabilizo de nada.

Y ahora me voy. Suerte!
El 1 mio está mal, es como ha dicho él, dividiendo los positivos y los negativos, es lo que tiene leer rápido xD. Y el 3 aunque parezca que hacemos cosas distintas, en el fondo es lo mismo.

PD: Y que conste que he contestado porque hay que ser un cabrón para mandar 66 ejercicios de este tipo, que son todos iguales y es un coñazo hacerlo :-P.
Pide al usuario cuántos números quiere introducir. Entonces, leemos los números enteros (tanto positivos como negativos) y finalmente, le diremos el mayor y el menor de todos los números leídos.


1. Pides el número de números que quiere introducir y lo guardas en una variable (aux)
2. Declaras dos variables, max y min y las inicializas (max = 0 y min = infinito)
3. Haces un for o un while desde 1 hasta aux
- Coges el dato y lo guardas en una variable (aux2)
- Si aux2>max entonces haces max = aux2
- Si aux2

Escribe un programa que muestre una tabla de raíces cuadradas de los números enteros en el cuadro que va desde 2 hasta 10. Utiliza el archivo de "encapçalament" MATH.H para importar la función sqrt(), que calcula la raíz cuadrada de un argumento de tipo doble. Utiliza los controladores de formato %3.0lf y %3.4lf para mostrar los números y sus raíces cuadradas respectivamente.


La dificultad de éste está en usar bien las funciones, las cuales yo no me acuerdo.

scribe el programa que implementa una calculadora simple de cuatro funciones. El programa muestra un menú con cuatro opciones (sumar, restar, multiplicar o dividir). Después de elegir una de las cuatro, pedirá los 2 números. Comprobará en caso de ser una división que no se quiere dividir por 0. Entonces, se representará la opreación con el resultado. Se vuelve a mostrar el menú.


Básicamente lo que te dice nersys
Insisto, muchas gracias a todos ^^

Estoy poniéndome desde 0, y ahora vienen los problemas:

Línea 10 'for' loop initial declaration used outside C99 mode

for(int p=0; p<5; p++);


Parece que se queja en esta fila...

Cabe comentar que me sorprende cómo programáis, en serio. Está todo comentado y demás. Yo sólo suelo comentar de qué va el ejercicio poco después de declarar las variables...

Como habréis podido comprobar, no tengo mucha idea en el asunto, empecé hace cosa de 2 semanas, y la verdad es que se está poniendo cada vez más complicado. Estoy cojeando con lo de los bucles, y ahora que estamos con los arrays ni os cuento...


Nersis escribió:PD: Y que conste que he contestado porque hay que ser un cabrón para mandar 66 ejercicios de este tipo, que son todos iguales y es un coñazo hacerlo smile_:-P.


¡A MISA CON ELLO! Encima, le pides ayuda al profesor y como que te repite lo mismo, o consigues hacer una línea más...T_T
Gonzo345 escribió:Insisto, muchas gracias a todos ^^

Estoy poniéndome desde 0, y ahora vienen los problemas:

Línea 10 'for' loop initial declaration used outside C99 mode



Parece que se queja en esta fila...

Cabe comentar que me sorprende cómo programáis, en serio. Está todo comentado y demás. Yo sólo suelo comentar de qué va el ejercicio poco después de declarar las variables...

Como habréis podido comprobar, no tengo mucha idea en el asunto, empecé hace cosa de 2 semanas, y la verdad es que se está poniendo cada vez más complicado. Estoy cojeando con lo de los bucles, y ahora que estamos con los arrays ni os cuento...




¡A MISA CON ELLO! Encima, le pides ayuda al profesor y como que te repite lo mismo, o consigues hacer una línea más...T_T


SI esa línea está escrita "tal cual" la has puesto, haces 5 veces nada. Fíjate que despues del for() tienes un punto y coma.
Gonzo345 escribió:Insisto, muchas gracias a todos ^^

Estoy poniéndome desde 0, y ahora vienen los problemas:

Línea 10 'for' loop initial declaration used outside C99 mode



Parece que se queja en esta fila...

Cabe comentar que me sorprende cómo programáis, en serio. Está todo comentado y demás. Yo sólo suelo comentar de qué va el ejercicio poco después de declarar las variables...

Como habréis podido comprobar, no tengo mucha idea en el asunto, empecé hace cosa de 2 semanas, y la verdad es que se está poniendo cada vez más complicado. Estoy cojeando con lo de los bucles, y ahora que estamos con los arrays ni os cuento...




¡A MISA CON ELLO! Encima, le pides ayuda al profesor y como que te repite lo mismo, o consigues hacer una línea más...T_T




En teoría, antes de hacer un programa, al menos tienes que cogerte una hoja en blanco y hacerte un esquema de como debe ir el programa, está claro que para hacer estos problemas de dos líneas no hace falta, pero en cuanto se complica un poco se debería hacer (aunque la mayoría de la gente pasa y se pone a hacerlo a pelo).

Y el error que te da, primero que si pones el ; después del for sin poner nada más no te va a valer para nada, tienes que poner:

for(...) {
instrucciones
}

o

for(...)
instruccion;

También prueba a declarar el int p fuera del for y luego poner for(p=0;p<5;p++), en java por ejemplo si que se puede poner el int p dentro del for, pero en C no lo recuerdo, por eso puede que de error (aunque seguramente también se pueda).
Sois unos hachas macho [plas]

Lo del for ya está arreglado, pero ahora se me queja con el maldito "cin"

La verdad es que tengo un lío en la cabeza que no os podéis imaginar, que si for, que si do while, que si tal, que si cual... También me lío con el tema de cuando poner y cuando no poner ; y bueno, hay que decir que me mato a poner llaves ({}) a más no poder. También me lío con los "&" y con las comillas simples, pero son puntos básicos, los cuales tengo que afianzar, porque así no puede seguir la cosa.

Tengo unos manuales guardados en favoritos que luego les voy a echar un vistazo, me vendrán bien, visto lo visto.

Muchísimas gracias a todos, gente, pero justamente, en breves me tengo que ir. Aún así, cuando vuelva más tarde, me pondré a leer todo con detenimiento, que todo lo que ponéis me lo tengo que leer 5 veces por lo menos... [mamaaaaa]

Siento haber quedado...así de mal, pero os agradezco a todos la mano, o la pierna que me habéis echado.

Muchas gracias, ya os daré noticias de cómo evoluciona el asunto, y de qué me dicen el lunes, pero si ven estos ejercicios como tal...seguro que alucina el tío.

P.D: como compilador uso el Dev-C ++ 4.9.9.2 de Bloodshed.
Gonzo345 escribió:Lo del for ya está arreglado, pero ahora se me queja con el maldito "cin"


Es lo que tiene usar librerías de C++ en C xD.

PD: en C, prueba scanf, u open/read para hacerlo con archivos.
Gonzo345 escribió:Sois unos hachas macho [plas]

Lo del for ya está arreglado, pero ahora se me queja con el maldito "cin"

La verdad es que tengo un lío en la cabeza que no os podéis imaginar, que si for, que si do while, que si tal, que si cual... También me lío con el tema de cuando poner y cuando no poner ; y bueno, hay que decir que me mato a poner llaves ({}) a más no poder. También me lío con los "&" y con las comillas simples, pero son puntos básicos, los cuales tengo que afianzar, porque así no puede seguir la cosa.

Tengo unos manuales guardados en favoritos que luego les voy a echar un vistazo, me vendrán bien, visto lo visto.

Muchísimas gracias a todos, gente, pero justamente, en breves me tengo que ir. Aún así, cuando vuelva más tarde, me pondré a leer todo con detenimiento, que todo lo que ponéis me lo tengo que leer 5 veces por lo menos... [mamaaaaa]

Siento haber quedado...así de mal, pero os agradezco a todos la mano, o la pierna que me habéis echado.

Muchas gracias, ya os daré noticias de cómo evoluciona el asunto, y de qué me dicen el lunes, pero si ven estos ejercicios como tal...seguro que alucina el tío.

P.D: como compilador uso el Dev-C ++ 4.9.9.2 de Bloodshed.


"cin" es de C++ asi que hay que cambiar esa linea por:

scanf("%d", &i);
13 respuestas