|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - ermiguel1979
26
« en: Domingo 20 de Diciembre de 2009, 11:21 »
Gracias tio, eran las pistas que me faltaban, aunque al final lo he hecho con un solo vector y unos cuantos bucles... Te lo mando para que lo veas: /*EJERCICIO 8; PRACTICA 4*/ #include <stdio.h> #include <stdlib.h> /*Algoritmo -> 100 NUMEROS*/ int main (void){ int contador[101]; //array contador de cada numero (las repeticiones) int i=0, a=0, b=0; //contadores de los bucles 'for' y 'while' int bandera=0; //cierre del bucle 'while' int valor; //numero introducido por teclado en cada iteración /*Inicializar el vector contador*/ for(i=0; i<=100; i++){ contador =0; } /*Pidiendo numeros*/ while((a <= 100) && (bandera == 0)){ //permite 100 entradas printf("Introduce numero entre 0 y 100: "); scanf("%i", &valor); if((valor < 0) || (valor >100)){ bandera = 1; } contador[valor] = contador[valor] +1; a++; } printf("n"); /*Mostrando numeros*/ for(b=0; b<=100; b++){ printf("%i: %it", b, contador); } printf("n"); system("PAUSE"); }
Gracias, gracias, gracias...
27
« en: Sábado 19 de Diciembre de 2009, 21:49 »
Buenas noches a toda la gente del foro. Soy Miguel, con otro ejercicio cojonero de clase que me trae por la calle de la amargura... El bichejo dice así:
"Crea un programa que lea de teclado una secuencia de números enteros positivos de 0 a 100, ambos inclusives. La secuencia de números introducidos terminará cuando se introduzca un número que no cumpla la condición (que no esté entre 0 y 100). Al finalizar de introducir los números , mostrará cuantas veces se ha introducido cada número."
Tengo problemas con detener el ciclo cuando no se desee introducir más números (sin tener que terminar de rellenar el vector), y me parece que tanto condicional no debe ser una forma muy eficiente de resolverlo. Más que nada porque solo he implementado el algoritmo para números del 0 al 13...
Os mando lo que llevo hecho hasta ahora...
#include <stdio.h> #include <stdlib.h>
int main (void){ int vector[50]; int I, numero; int a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0; //Variables que anotan las_ int i=0, j=0, k=0, l=0, m=0, n=0; //_repeticiones de cada numero for(I=0; I<=50; I++){ printf("Introduce numero entre 0 y 13: "); scanf("%i", &numero); if(numero>=0 && numero<=13){ if(numero=0){ a=a+1; }else{ if(numero=1){ b=b+1; }else{ if(numero=2){ c=c+1; }else{ if(numero=3){ d=d+1; }else{ if(numero=4){ e=e+1; }else{ if(numero=5){ f=f+1; }else{ if(numero=6){ g=g+1; }else{ if(numero=7){ h=h+1; }else{ if(numero=8){ i=i+1; }else{ if(numero=9){ j=j+1; }else{ if(numero=10){ k=k+1; }else{ if(numero=11){ l=l+1; }else{ if(numero=12){ m=m+1; }else{ if(numero=13){ n=n+1; } } } } } } } } } } } } } } } if(numero<0 || numero>13){ printf("numero incorrecto; el numero debe estar entre 0 y 13n"); } } printf("0: %it1: %it2: %it3: %it4: %in", a, b, c, d, e); printf("5: %it6: %it7: %it8: %it9: %in", f, g, h, i, j); printf("10: %it11: %it12: %it13: %in", k, l, m, n); system("PAUSE"); }
Gracias a todos y un saludo!
28
« en: Viernes 18 de Diciembre de 2009, 18:26 »
Esta perfecto, justo eso es lo que me faltaba. Ala, listo para el siguiente ejercicio.
Gracias!
29
« en: Viernes 18 de Diciembre de 2009, 17:56 »
Juer nenes, vosotros si que sabeis. Que pardo me quedo leyendo las explicaciones. La verdad es que no le cojo el rítmo ni con un tambor; menos más que estais vosotros.
Pues ya os digo, por una tontería te tiras toda la tarde rabiando porque no te funciona el programita.
Chapó por vosotros; gracias, gracias, gracias.
Un saludo!
Miguel.
30
« en: Jueves 17 de Diciembre de 2009, 13:31 »
Hola a todos, tengo un problemilla (para variar) con otro de mis amadísimos ejercicios de programación. La criatura en cuestión dice así:
"Realizar un algoritmo que pida un conjunto de números, los almacene en un vector y calcule el mayor, el menor y la media de dichos números".
Lo que llevo hecho hasta ahora, ni me pide los números a introducir, ni hace las operaciones que debería. Os pongo el código por si le pillasis el/los errores.
Gracias chicos...
#include <stdio.h> #include <stdlib.h>
int main (void){ //VARIABLES int vector[100]; //array donde se almacenan los numeros int mayor, menor; //el mayor y el menor de todos float media=0; //la media de los numeros int i; //contador int n; //cantidad de numeros a introducir int suma; //suma de los numeros dados, de cara a la media /*Leer Variables*/ printf("Indique numero de datos a introducir: "); scanf("%i", &n); //OPERACIONES for(i=0; i>=n; i++){ printf("Introduzca numero: "); scanf("%i", &vector); } /*Inicializar variables relativas al vector*/ mayor=vector[0]; menor=vector[0]; suma=vector[0]; /*Recorrer el vector comparando y sumando numeros*/ for(i=1; i>=n; i++){ if(vector>mayor) mayor=vector; if(vector<menor) menor=vector; suma=suma+vector; } media=suma/n; //RESULTADOS printf("El mayor es: %in", mayor); printf("El menor es: %in", menor); printf("La media es: %fn", media); }
Un saludo y felices fiestas...
31
« en: Jueves 17 de Diciembre de 2009, 09:53 »
Tampoco me funciona. He hecho los cambios que dijiste pero sigue sin funcionar. Te vuelvo a mandar el programa...
/*EJERCICIO 6(BIS); PRACTICA 4*/
#include <stdio.h> #include <stdlib.h>
/*Algoritmo -> CAMBIO DE BASE DECIMAL-OCTAL*/ int main (void){ //DECLARACION DE VARIABLES /*entradas*/ int numero; //el numero a cambiar de base (dado en base 10) /*Intermedias*/ int i, j; //contadores de bucles int cociente; //cociente de las sucesivas divisiones de numero/8 int resto; //'resto' de numero/8;va al array;sera el numero,base 8 /*Salidas*/ int octal [10]; /*Array (vector) de tipo entero para guardar el numero en base octal (base 8)*/ /*Leer Variables*/ printf("Escribir numero en base 10: "); scanf("%i", &numero);
//OPERACIONES i=1; //se prepara 'i' con ese valor para que el bucle while_ //guarde los valore de 'resto' en los espacios del vector
cociente=numero/8; //la primera division se hace fuera del bucle resto=numero%8; octal[0]=resto; while (cociente>=8){ resto=cociente%8; cociente=cociente/8; octal=resto; i++; //'i' aumenta +1 cada iteración recorriendo 'octal' } i=i+1; octal=cociente; //para guardar el ultimo valor de 'cociente'
//RESULTADOS printf("%i, en base octal es: ", numero); for(j=i; j<=0; j--){ //recorre el vector de atras hacia delante printf("%i",octal[j]); } }
Por si le ves algo que pueda dar conflicto. Gracias!
32
« en: Jueves 17 de Diciembre de 2009, 09:38 »
Buenos días Locazoporro. Pues tienes razón, no había caido en eso. vaya bulto de tio... Voy a corregirlo ahora mismo.
Muchas gracias por tu tiempo y un saludo!!
33
« en: Miércoles 16 de Diciembre de 2009, 15:16 »
Buenas tardes Diego, te mando lo que tengo hecho. Debería funcionar, jejejjeje; pero me dá un problema al leer en el vector tras la primera iteración del bucle while. He incluido algnos PRINTF para ver lo que va haciendo... Porfa, echale un vistazo que yo no veo el error...
/*EJERCICIO 6; PRACTICA 4*/
#include <stdio.h> #include <stdlib.h>
/*Algoritmo -> CAMBIO DE BASE DECIMAL-OCTAL*/ int main (void){ //DECLARACION DE VARIABLES /*entradas*/ int numero; //el numero a cambiar de base (dado en base 10) /*Intermedias*/ int i, j; //contadores de bucles int cociente; //cociente de las sucesivas divisiones del numero/8 int resto; //'resto' de numero/8;va al array;sera el numero,base 8 /*Salidas*/ int octal [10]; /*Array (vector) de tipo entero para guardar el numero en base octal (base 8)*/ /*Leer Variables*/ printf("Escribir numero en base 10: "); scanf("%i", &numero); //OPERACIONES i=2; //se prepara 'i' con ese valor para que el bucle while_ //guarde los valore de 'resto' en los espacios del vector cociente=numero/8; //la primera division se hace fuera del bucle resto=numero%8; octal[1]=resto; printf("%i, %i, %i, %in", i, cociente, resto, octal[1]); while (cociente>=8){ resto=cociente%8; cociente=cociente/8; octal=resto; i++; //'i' aumenta +1 cada iteración recorriendo 'octal' } printf("%i, %i, %i, %in", i, cociente, resto, octal); i=i+1; octal=cociente; //para guardar el ultimo valor de 'cociente' //RESULTADOS printf("%i, en base octal es: ", numero); for(j=i; j<=1; j--){ //recorre el vector de atras hacia delante printf("%i",octal[j]); } }
Oye, muchas gracias por tu tiempo y felices fiestas!
34
« en: Martes 15 de Diciembre de 2009, 09:56 »
Buenos días. Lo de dividir lo tengo claro, pero como lo hago para almacenar los restos y luego mastrarlos al revés???, será con un vector u algo así...
Los vectores no se como se usan.... le voy a preguntar al profe, pero si pudieses aclararme algo...
Muchas gracias. Un saludo.
35
« en: Lunes 14 de Diciembre de 2009, 15:42 »
Hola a todos, tengo que hacer un programita que dice lo siguiente: Realizar un porgrama para convertir números enteros decimales (en base 10) a sus respectivas representaciones octales (en base 8), por medio de sucesivas divisiones.
Y... no tengo ni idea de como hacerlo. Os agradezco toda la ayuda que me podais dar...
Un saluo!!!
36
« en: Lunes 14 de Diciembre de 2009, 12:01 »
Tengo una preguntilla para vosotros, por qúe poneis:
s += pow(X,i)/factorial(i);
No me queda claro lo sel s +=
+= es algún tipo de función??, porque en la instrucción no está contemplado el 1+X y sin embargo si lo suma.
37
« en: Domingo 13 de Diciembre de 2009, 18:54 »
Hey!, un detalle muy bueno el del ==; voy a corregirlo ahora mismo. Gracias...
38
« en: Sábado 12 de Diciembre de 2009, 19:52 »
HOla chic@s; necesito hacer un programilla que te muestre en pantalla todos los divisores de un número entero.
He estado cacharreando, pero despues de escribir el codigo y tal, el programa no hace nada. Pide y lee el número, pero se me atranca en el 'resto'.
Hay va la parida que llevo hecha:
#include <stdio.h> #include <stdlib.h> #include <math.h>
/*Algoritmo -> DIVISORES de un numero dado*/ int main (void){ /*VARIABLES*/ //Entradas int num; //El numero a estudiar //Intermedias int i; //Contador del 'PARA' int aux; //resto de 'num'/'i' en cada iteracion //Leer variables printf("Escribir un numero entero: "); scanf("%i", &num); /*OPERACIONES*/ for(i=1; i<=num; i++){ aux = num%i; if (aux=0){ printf("%i es divisor de %in", i, num); } } }
Bueno, que deciros a parte de que soy más malo que Fu-Manchú.... en esto del C.
Un saludo para la gente del foro!!!
39
« en: Sábado 12 de Diciembre de 2009, 19:32 »
Gracias por vuestro tiempo chicos. Mañana me pongo a terminarlo a ver si lo tengo listo para el lunes. Las funciones y procedimientos aún no puedo usarlas, cosa de las prácticas, pero parecen de gran ayuda. Por lo menos para simplificar el código.
Un saludo a todos y felices fiestas, que ya se acercan!!!
40
« en: Jueves 10 de Diciembre de 2009, 11:42 »
Hola a todos y buenos días...
Tengo un problemilla con un ejercicio que no me sale; dice así:
Escribe un programa que calcule el valor de S para un número real X dado, utilizando la siguiente serie: S = 1 + X + ((X^2)/2!) + ((X^3)/3!) +((X^4)/4!)...
Llevo hecho lo siguiente, que solo me funciona si no pongo sumandos fraccionarios...
#include <stdio.h> #include <stdlib.h> #include <math.h>
/*Algotirmo -> SUCESION*/ int main (void){ /*Entradas*/ int numaprox; //el numero de sumandos factoriales deseados double x; //el numero en cuestion para el que se calcula la sucesión /*Salidas*/ float S; /*Intermedias*/ float factorial=2; //el factorial del número del denominador float aux; //las X de los numeradores de los sumandos int i=2; //contador del bucle 'for' float sumando=0; //el valor del sumando concreto de la iteración float cuentasumando=0; //el valor total de los sumandos fraccionarios /*Leer Entradas*/ printf("Introducir numero real para la sucesion: "); scanf("%lg", &x); printf("Indicar el numero de sumandos factoriales deseados: "); scanf("%i", &numaprox); /*OPERACIONES*/ /*Calculo de los Sumandos fraccionarios*/ if(numaprox > 0){ for(i=2; i<=numaprox; i++){ for(i=2; i<=numaprox; i++){ //calcular los factoriales factorial=factorial*i; } aux=pow(x, i); sumando=(aux/factorial); cuentasumando=cuentasumando+sumando; } } /*RESULTADOS*/ S = 1+x+cuentasumando; printf("Para x=%lg, S = %fn", x, S); system("PAUSE"); }
Gracias a todos por vuestra atencion!!!
41
« en: Lunes 7 de Diciembre de 2009, 19:44 »
Gracias chicos por vuestro tiempo. Un saludo...
42
« en: Lunes 23 de Noviembre de 2009, 10:58 »
Gracias tio, me has sido de gran ayuda. Un saludo!
43
« en: Viernes 20 de Noviembre de 2009, 11:28 »
Hola a todos. Tengo un ejercicio que realizar y no tengo ni ideita. Supuestamente tengo que hacerlo con bucles y arrays pero no le pillo el ritmo ni con un tambor. A ver si me echais una mano...
El ejercicio dice así:
Necesitamos un programa que imprima una pirámide de dígitos como la de la figura, tomando como entrada el número de filas de la misma:
1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1
44
« en: Jueves 5 de Noviembre de 2009, 13:36 »
Buenas tardes a todos; tengo un problemilla con una práctica que no se por donde coger. El ejercicio en cuestión dice así:
Diseñar un algoritmo que lea las longitudes de los tres lados de un triángulo (L1,L2,L3) y determine qué tipo de triángulo es, de acuerdo a los siguientes casos. Suponiendo que A determina el mayor de los tres lados y B y C corresponden con los otros dos, entonces:
Si A>=B+C No se trata de un triángulo. Si A2 = B2+C2 Es un triángulo rectángulo. Si A2>B2+C2 Es un triángulo obtusángulo. Si A2<B2+C2 Es un triángulo acutángulo.
Supongo que esos DOSES que van con las letras serán CUADRADOS, y no se como ponerlos en mi código. Lo que llevo realizado hasta ahora es lo siguiente: ¡Por cierto, uso Dev-C++ y C-Free!
#include <cstdlib> #include <iostream> #include <cstdio> #include<cstdlib>
#define CUADRADO(x) (x*x) /*Definicion de macros*/
/*DETERMINADOR DE TRIANGULOS*/
using namespace std;
int main(int argc, char *argv[]) { /*Declaracion Variables*/ float a; float b; float c; float mayor; // el lado más grande float ladoB; // otro de los lados float ladoC; // otro de los lados /*Leer Variables*/ printf("Introduzca medida primer lado L1: "); fflush(stdin); scanf("%f", &a); printf("Introduzca medida segundo lado L2: "); scanf("%f", &b); printf("Introduzca medida tercer lado L3: "); scanf("%f", &c); /*Seleccion lado MAYOR*/ if(a > b && a > c){ mayor = a; ladoB = b; ladoC = c; }else{ if(b > a && b > c){ mayor = b; ladoB = a; ladoC = c; }else{ mayor = c; ladoB = a; ladoC = b; } } /*Indicar lado MAYOR y lados secundarios*/ printf("nEl lado MAYOR es %f y los secundarios son %f y %fnn", mayor, ladoB, ladoC); /*Mostrar tipos de triangulos*/ if(mayor >= ladoB+ladoC){ printf("No se trata de ningun triangulonn"); } system("PAUSE"); return EXIT_SUCCESS; }
La macro del CUADRADO la vi por ahí en Internet, pero no consigo hace que funcione cuando pongo las otras condiciones con los "if" Otra cosilla es que, dado mi nivel, solo puedo usar "if" y "switch" para hacerlo.
Gracias a todos y un saludo!
45
« en: Jueves 15 de Octubre de 2009, 13:07 »
Hola a todos y GRACIAS de antemano. Estoy empezando con C en la facultad, y no me queda claro si el siguiente ejemplo no hace nada en sí, o si falta declarar y darle valor a las variables, o que demonios necesita para que entregue el factorial de un número de forma recursiva e iterativa.
También incluyo dos ejemplos individuales que me dan error al compilar.
Ejemplo doble (iterativo/recursivo):
#include <cstdlib> #include <iostream> #include <stdio.h> #define VALOR 5 #define FACT 120
using namespace std;
int main(int argc, char *argv[]) { int fact_i(int v) { int r=1, i=0; while(i<=v) { r=r*1; i=i+1; } return r; } int fact_r (int v) { if(v==0) return 1; else return v*fact_r(v-1); }
main() { int r, valor=VALOR; if((r=fact_i(valor)) !=fact_r(valor)) printf("Codificacion erronea!!.n"); else if(r==FACT) printf("Codificacion correcta.n"); else printf("Algo falla!!.n"); } system("PAUSE"); return EXIT_SUCCESS; }
EJEMPLO RECURSIVO SIMPLE:
#include <cstdlib> #include <iostream>
using namespace std;
int main(int argc, char *argv[]) { int factorial(int n) { if ((n==0)||(n==1)) return(1); else return(n*factorial(n-1)); { system("PAUSE"); return EXIT_SUCCESS; }
EJEMPLO ITERATIVO SIMPLE:
#include <cstdlib> #include <iostream>
using namespace std;
int main(int argc, char *argv[]) { int factorial(int n) { int i, fact=1; for (i=2; i<=n; i++) fact=fact*i; return(fact); } system("PAUSE"); return EXIT_SUCCESS; }
|
|
|