› Foros › PC › Software libre
int num,factorial=num;
printf("Introducir numero\n");
scanf("%d",&num);
//factorial=num;
amuchamu escribió:Por cierto, system("pause") debería estar prohibido, no sé por qué os enseñan eso.
#include <stdio.h>
#include <stdlib.h>
coid main() {
int n, fact = 1;
printf("Introducir numero\n");
scanf("%d", &num);
//factorial = num;
for (i = 2; i <= n; i++)
fact *= i;
printf("El factorial del numero es %d\n", fact);
}
#include <stdio.h>
#include <stdlib.h>
void main() {
float millas;
printf("Insertar millas\n");
scanf("%f", &millas);
kilometros = millas * num;
printf("El maraton en kilometros es %f\n", millas * 1.6609);
}
#include <stdio.h>
#include <stdlib.h>
main() {
int n;
scanf("%d", &n);
printf("La suma de los numeros es %d\n", n * (n - 1) / 2);
}
xgc1986 escribió:Me he cansado, tu codigo es demasiado malo, antes de intentar que alguien te lo solucione deberias de leer lo que escribes y si tiene algun sentido, estamos yo y dos compañeros de la universidad y uno que hace el grado superior, y coincidimos que has cogido el teclado y pulsado teclas aleatorias
int x = 7;
Y pregunta cuanto necesites, que para esto están los foros.
Ferdy escribió:Aunque es bien debatible si esto debería ir en Software Libre.... o en "Deberes".
#include <stdio.h>
int main()
{
int N1;
int N2;
int suma=0;
int entre;
printf ("Introduce un número: ");
scanf ("%d",&N1);
entre = N1;
printf ("Introduce otro número: ");
scanf ("%d",&N2);
while (entre<=N2)
{
suma = suma + entre;
entre = entre + 1;
}
printf ("La suma és %d.\n", suma);
}
Serginius escribió:Aprovecho el hilo, yo estoy en un caso similar...
El ejercicio es este:
Escribe un programa que calcule la suma de todos los números múltiplos de 5
comprendidos entre dos enteros positivos leídos por teclado
Yo he llegado hasta aquí#include <stdio.h>
int main()
{
int N1;
int N2;
int suma=0;
int entre;
printf ("Introduce un número: ");
scanf ("%d",&N1);
entre = N1;
printf ("Introduce otro número: ");
scanf ("%d",&N2);
while (entre<=N2)
{
suma = suma + entre;
entre = entre + 1;
}
printf ("La suma és %d.\n", suma);
}
He conseguido que sume todos los números, pero no sé como hacer para que sólo sume los múltiples de 5, he provado poniendo "if (entre%5==0)" por allí enmedio pero la liaba y salían cosas raras...
Aparte, creéis que tengo que incluir los 2 números que se ponen? Si no pondría (entre = N1 + 1) y while(entre<=N2-1)
¿Que tendría que hacer?
Gracias de antemano!
suma <- 0
A <- teclado
B <- teclado
para i <- A+1 hasta B-1 hacer
si i es múltiplo de 5 entonces # if (i%5 == 0){
suma <- suma + i
finSi
finPara
Crapos escribió:Lo siento " xgc1986 ". Se que mi codigo es muy malo, y es que esos ejercicios corresponen al segundo tema de la asginatura Fundamentos de Programacion. Te aseguro que si supuese la mitad que tu, no estaria preguntandolo en un foro.
A de mas de esto, lo estoy estudiando a distancia, no tengo un profesor en frente al que preguntar cada duda en cada liena de mi codigo.
A un a si te agradezco mucho tu ayuda y la de los de mas.
No pregunto mas, tengo claro que no soy un genio con estas cosas pero no necesito que me lo digan cuando estoy intentando aprender algo.
Muchas gracias a todos.
xgc1986 escribió:pero si le estamos haciendo los deberes
#include <stdio.h>
int main()
{
int N1;
int N2;
int suma=0;
int entre;
printf ("Sigue las instrucciones para calcular la suma de los múltiplos de cinco entre dos números enteros.\n\n");
printf ("Introduce un número: ");
scanf ("%d",&N1);
entre = N1+1;
printf ("Introduce otro número: ");
scanf ("%d",&N2);
while (entre<=N2-1)
{
if (entre%5==0)
{
suma = suma + entre;
}
entre = entre + 1;
}
printf ("La suma és %d.\n", suma);
}
if (numero1 > numero 2){
aux = numero2;
numero2 = numero1;
numero1 = aux;
}
\-\adEs escribió:Serginius, un consejo. Los nombres de las variables, la primera letra siempre en minúscula. Las mayúsculas suelen dejarse para las definiciones y los macros
#include <stdio.h>
int main()
{
int n1;
int div=0;
printf ("Introduce un número: ");
scanf ("%d",&n1);
while (div<=n1)
{
if (div%n1==0)
{
printf("%d, ",div);
}
div= div + 1;
}
printf("\n");
}
#include <stdio.h>
int main() {
int n1;
int div=1;
printf ("Introduce un número: ");
scanf ("%d",&n1);
while(div<=n1) {
if(ni%div==0) {
printf("%d, ",div);
}
div++;
}
printf("\n");
}
#include <stdio.h>
int main()
{
int n1;
int div=1;
printf ("Introduce un número entero para ver sus divisibles: ");
scanf ("%d",&n1);
printf ("\nEl número %d es divisible por ", n1);
while (div<n1-1)
{
if (n1%div==0)
{
printf("%d, ",div);
}
div++;
}
if (div=n1)
{
printf("%d.",div);
}
printf("\n");
}
Serginius escribió:Ahhh vale, lo probé con b/a y me salía el error ese, no caí en lo del 0
Y eso de la guía de estilo qué es/dónde se mira? xD
Código final:#include <stdio.h>
int main()
{
int n1;
int div=1;
printf ("Introduce un número entero para ver sus divisibles: ");
scanf ("%d",&n1);
printf ("\nEl número %d es divisible por ", n1);
while (div<n1-1)
{
if (n1%div==0)
{
printf("%d, ",div);
}
div++;
}
if (div=n1)
{
printf("%d.",div);
}
printf("\n");
}
El segundo if lo he puesto para que acabe la série con un punto. Hay alguna forma fácil de hacer que en el penúltimo divisible ponga "y" en vez de una coma? Si es muy complicado no hace falta xD
#include <stdio.h>
int main() {
int num;
int div;
printf("Introdueix un nombre: ");
scanf("%i", &num);
printf("Els divisors de %i son: ", num);
for(div = 1; div < num; ++div) {
if((num % div) == 0)
printf("%i, ", div);
}
printf("%i.\n", num);
return 0;
}
Serginius escribió:Ahhh vale, lo probé con b/a y me salía el error ese, no caí en lo del 0
Y eso de la guía de estilo qué es/dónde se mira? xD
Código final:#include <stdio.h>
int main()
{
int n1;
int div=1;
printf ("Introduce un número entero para ver sus divisibles: ");
scanf ("%d",&n1);
printf ("\nEl número %d es divisible por ", n1);
while (div<n1-1)
{
if (n1%div==0)
{
printf("%d, ",div);
}
div++;
}
if (div=n1)
{
printf("%d.",div);
}
printf("\n");
}
El segundo if lo he puesto para que acabe la série con un punto. Hay alguna forma fácil de hacer que en el penúltimo divisible ponga "y" en vez de una coma? Si es muy complicado no hace falta xD
#include <stdio.h>
int main()
{
int num, cont;
float factorial=1;
printf("Introduce el número entero a partir de cero del cual deseas saber el factorial: ");
scanf("%d", &num);
if (num==0) {
printf("\nEl factorial de %d es %.0f.\n", num, factorial);
}
else {
if (num<=12) {
for (cont=1; cont<=num; cont++) {
factorial=factorial*cont;
}
printf("\nEl factorial de %d es %.0f.\n", num, factorial);
}
else {
for (cont=1; cont<=num; cont++) {
factorial=factorial*cont;
}
printf("\nEl factorial de %d es %.2e.\n", num, factorial);
}
}
}
#include <stdio.h>
#include <stdlib.h>
void main() {
int n;
float fact = 1.0;
printf("Introducir numero\n");
scanf("%d", &n);
for (i = 2; i <= n; i++)
fact *= i;
printf("El factorial del numero es %d\n", fact);
}
xgc1986 escribió:si puedes poner los divisores de n en cualquier orden, entonces hay una eficiencia muy buena para este programa, ya que por ejemplo 20 = 5*4, entonces conseguimos dos divisores. Entonces no hay que buscar de uno hasta n, sino que henos de buscar de uno hasta raiz cuadrada de n. El coste es mucho menor, por jemplo. I si puedes ponerlos en cualquier orden este es un buen sistema a los profesores de programacion les gustan estas cosas
#include <stdio.h>
int main()
{
int num, cont;
float factorial=1.0;
printf("Introduce el número entero a partir de cero del cual deseas saber el factorial: ");
scanf("%d", &num);
for (cont = 1; cont <= num; cont++) {
factorial *= cont;
}
if (num <= 12) {
printf("\nEl factorial de %d es %.0f.\n", num, factorial);
}
else {
printf("\nEl factorial de %d es %.2e.\n", num, factorial);
}
}
#include <stdio.h>
int main ()
{
int num1, num2, cont, resultado = 0, resto;
float resultado2;
printf("Bienvenido a la calculadora de divisiones:\n\n");
printf("Introduce un número: ");
scanf("%d",&num1);
printf("Introduce otro número: ");
scanf("%d",&num2);
/* Operaciones distintas según qué número sea mayor */
if (num1>=num2) {
cont=num2;
while (cont <= num1) {
cont = cont + num2;
resultado++;
}
/*Intento hacer que sume el resto, pero no sé como hacerlo, por ejemplo 5/2 NO es 2+1 :/ */
resto = num1 - (num2 * resultado);
resultado2 = resultado + resto;
printf("El resultado es %.2f\n", resultado2);
}
/*No sé ni por dónde empezar u_u*/
else {
printf("·___·\n");
}
}
//A / B
int i = 0;
while (A >= B) {
A -= B;
i++;
}
// al final del bucle la solucion es la variable i
I te lo dice un profesor de programacion, tanto n como n/2 son dos funciones lineales, en cambio la curva de raiz de n es menor que una funcion lineal
Ferdy escribió:I te lo dice un profesor de programacion, tanto n como n/2 son dos funciones lineales, en cambio la curva de raiz de n es menor que una funcion lineal
Jaja, esa afirmación es una chorrada. Depende de lo grande que sea n0.
No es por nada, acabo de enseñar a otros profesores de la universidad lo que has dicho, y sinceramente, no te gustaria saber lo que dicen de ti.
lo que has dicho es un error tipico de novatos (aunque tienes parte de razon), deberias revisar manuales de eficiencia de algoritmos, sobretodo por que el de encontrar todos los divisiores es un ejercicio muy famoso, y se hace hasta la raiz(esta incluida)
por otra parte si n0 es muy pequeña(poca pendiente(supongo que te refieres a eso)) el programa se divide en 2 partes un en caso de que n se a menor que n0 y otra que sea mayor.
independientemente de n0, en el infinito SIEMPRE es mayou una lineal que no una raiz
f(n) = O(g(n)) si existen constantes c > 0 y n0 > 0 tales que: 0 <= f(n) <= g(n) para n >= n0
os recomiendo esta pagina http://uva.onlinejudge.org/, si encontrais este ejercicio de los divisores y lo haceis hasta n, no os lo aceptaran, aqui se hacen varios torneos de programacion muy importantes, y de unos 100000 usuarios yo estoy entre los 8000 primeros (no es una buena posicion tampoco, ya que voy haciendo con calma)
Sertinell escribió:Cuentalos mientras los ordenas.
PPD: Y sin querer machacar ni desprestigiar a nadie (qué coño, yo estoy en una situación laboral similar); que seas profesor de universidad no ayuda en nada a tu argumento. Es símplemente un 'argumentum ad verecundiam'.
int *repeticiones=NULL
repeticiones = (int *) malloc (sizeof (int) * 1)); //Comprobar que se ha reservado bien siempre!
//inicializas
repeticiones[1] = 1;
Aracem escribió:para Xtrem00
Imagino que si te están pidiendo estas cosas ya sabrás punteros o eso espero, de todas formas se puede hacer estático pero queda más chano :S
Lo que puedes hacer es crear un vector para ir guardando los números que se van repitiendo.int *repeticiones=NULL
repeticiones = (int *) malloc (sizeof (int) * 1)); //Comprobar que se ha reservado bien siempre!
//inicializas
repeticiones[1] = 1;
Vas quitando las repeticiones y sumando uno a su correspondiente "repetición[i]". Cada vez que añadas un nuevo número haces un realloc para reajustar la memoria. TAmbién puedes hacerte una función para ver el número de números diferente y así es más fácil todos los bucles y la reserva de memoria, pero eso ya como veas.
Si no te gustan los punteros puedes crearte un vector de tamaño fijo "int repeticiones[20]" pero es muchísimo menos eficiente y tienes que controlar más cosas (como que el número de números difenrentes no sea mayor a 20 en este caso etc)
xgc1986 escribió:para la division sin /, es muy sencilla
//A / B
int i = 0;
while (A >= B) {
A -= B;
i++;
}
// al final del bucle la solucion es la variable i
//A / B
int i = 0;
while (A >= B) {
A -= B;
i++;
}
printf("%d,", i);
int ndecimales = 0;
int maximodecimales = 10; //cuantos decimales queremos
while (A!= 0 && ndecimales <= maximodecimales) {
A *= 10;
while (A >= B) {
A -= B;
}
printf("%d", A);
ndecimales++;
}
printf("\n");
xgc1986 escribió:para el problema a la hora de ordenarlos por frecuencia, puedes utlizar un vector auxiliar y ahi dices cuantas veces aparece cada uno, con la posicion relativa al otro vector/array que usas, la primera vez ordenas los dos con el metodo que quieras en funcion de tener los numeros de menor a mayor, y luego los dos segun la frequencia que esta en el otro vector. es muy lioso escribirlo, espero que sirva
#include <stdio.h>
#include <stdlib.h>
main()
{
int division=0, lista[10]= {0,0,0,0,0,0,0,0,0,0,}, numero, j=0;
printf("Introducir numero\n");
scanf("%d",&numero);
division = numero/10;
while((numero/10 != 0) || (j != 10))
{
division = division/10;
lista[j]= division;
j++;
for(j=0;j<10;j++)
{
printf("El contenido del array es %d\n", lista[j]);
}
system("PAUSE"); // no me acuerdo que tenia que usar en vez de system("pause")
}
}
Crapos escribió:(...)
division = numero/10;
printf("División vale %d", division); //Traza 1
while((numero/10 != 0) || (j != 10))
{
division = division/10;
printf("División vale %d", division); //Traza 2
lista[j]= division;
printf("Lista[%d] vale %d", j, lista[j]); //Traza 3
j++;
for(j=0;j<10;j++)
{
printf("El contenido del array es %d\n", lista[j]);
}
system("PAUSE"); // no me acuerdo que tenia que usar en vez de system("pause")
}
scanf("%d",&numero);
La movida esq solo lo divide una vez y se queda hay. La idea serie que lo hiciera siempre que el numero dividido no fuera 0 y lo guardase en las distintas posiciones del array, par aluego de alguna forma ver cuantas veces se repitio un numero.
while (division > 0) // suponiendo que el número de entrada es positivo
El array lo muestra infintas veces, no se porq.