Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - estudiante_1

#1
Scripting / Método de Newton
25 Abril 2017, 17:41 PM
Me da error el siguiente código. Lo que quiero es mostrar una especie de lista con
Iteracion 1, valor de la aproximación x
etc

este es el código:
 
def f(x): return exp(x)-(5* x**2)-5
def df(x): return exp(x)-(10* x)

def newton(f, df, x0, tol):
    """Calcula una raíz de $f(x)=0$ mediante el método de Newton, a partir de x0"""
   
    max_iters = 100
    iter = 0
    while iter<max_iters:
        x1 = x0-f(x0)/df(x0) # Punto fijo en Newton
        if abs(x1-x0) < tol: #hacemos iteraciones hasta que las dferencias consecutivas sea tol
            return x1 , iter #En la función devolvemos la lista con los dos valores
        x0 = x1
        iter = iter+1
    print ("Error de convergencia")
   
x = newton(f, df, x0=7, tol=1e-11)
print (x)

   
   
   
   




   
   
   
   
   
    c= 1


    for iter in range(1,99):
   
    x1= x0-f(x0)/df(x0)
    x0= x1
    print("iteracion",c,",raiz aproximada,",x0)
    c= c+1
   
#2
Programación C/C++ / Numero feliz en C
8 Junio 2016, 12:30 PM
Hola, tengo que hacer un programa que me diga si un número es feliz. No sé como implementarlo. Lo que he hecho es primero que me diga las cifras que tiene el número ingresado y que me diga las cifras que son.
Aquí está la definición de número feliz: https://es.wikipedia.org/wiki/Número_feliz
    esto es lo que tengo de momento:
   #include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define max 100



    int cifras(int n,int i){
        i=1;
    while(n/10>0){
        n=n/10;
        i++;

    }
    return(i);
    }
    void digito(int v[],int n,int digitos,int c ){

       for(c=0;c<digitos;c++){
        v[c]=n%10;
        n=n/10;
       }

    }


       int main(Void){
       int n;
       int i=1;
       scanf("%d",&n);
       int v[max];
       int digitos=cifras(n,i);
    printf("Tiene %d cifras\n",digitos);
    int c;
   digito(v,n,digitos,c);
   for(c=0;c<digitos;c++){
    printf("%d\n",v[c]);
   }

















       system("pause");
       return(0);

       }

Gracias.
 
#3
Hola, quisiera saber un código que me dijera para un vector de 10 enteros que:
  El primer elemento esta repetido 2 veces
  El segundo elemento esta repetido 1 veces
.......... etc... Lo he intentado todo y no me sale. Gracias.
Al fin y al cabo es un programa que me diga cuantas veces aparece los elementos de un vector.
#4
Hola,  he hecho un programa que me factoriza un número. Me da error, y yo creo que el error está en dónde poner la función return.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

     int divide(int n,int divisores){
         divisores=2;
     while(n>=divisores){
        while(n%divisores==0){
            n=n/divisores;


        } divisores++;

     }

      return(divisores);
     }







     int main(void){
         int n,divisores;
     printf("dime el numero\n");
     scanf("%d",&n);
    printf("%d\n",divide(n,divisores));

     system("pause");
     return(0);

     }
#5
Hola, me encuentro con el mismo problema que con las matrices, en este caso con vectores. Tengo que compararlos y ver si son iguales.
este es el código:
  #include<stdio.h>
        #include<stdlib.h>

        int soniguales(int v[5],int a[5],int aux){
            int i;
        for(i=0;i<5;i++){
        if(v[i]!=a[i]) {
            aux=1;
        }
        }
        return (aux);
        }




    int main(void){
    int v[5],a[5],i,aux;
    for(i=0;i<5;i++){
    scanf("%d",&v[i]);
    }
    for(i=0;i<5;i++){
    scanf("%d",&a[i]);
    }
    soniguales(v,a,aux);

    if(aux==1) printf("Son distintos\n");
    else printf("Son iguales");
   







    system("pause");
    return(0);

    }
#6
Hola, he hecho un programa que me diga si dos matrices son iguales, y no me compila debido a la unica funcion que hay. El error que dice el compilador es unknown type a.
este es el codigo:
#include<stdio.h>
#include<stdlib.h>
     int iguales(int m[3][3],a[3][3],int i,int j){

     for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            if(m[i][j]==a[i][j]) return 1;
            else return 0;
        }
     }


     }

     int main(void){
      int m[3][3],i,j;
      int a[3][3];

             for(i=0;i<3;i++){
             for(j=0;j<3;j++){
             scanf("%d",&m[i][j]);
             }

             }
             printf("\n\t");

              for(i=0;i<3;i++){
              printf("\n");
             for(j=0;j<3;j++){

              printf("%6d ",m[i][j]);

             }
             }

             printf("\n");
             for(i=0;i<3;i++){
                for(j=0;j<3;j++){
                    scanf("%d",&a[i][j]);
                }
             }
                printf("\n\t");
                for(i=0;i<3;i++){
                        printf("\n");
                    for(j=0;j<3;j++){
                        printf("%6d ",a[i][j]);
                    }
                }
                printf("\n");

                  if(iguales(m,a,i,j)) printf("Son iguales\n");
                  else printf("No son iguales\n");







             system("pause");
             return(0);
             }


#7
Ya me salió, este es el codigo:
int main(void){
     int m[3][3],i,j,n,posfila,poscolumna;
     srand(time(NULL));
            for(i=0;i<3;i++){
            for(j=0;j<3;j++){
            scanf("%d",&m[i][j]);
            }

            }
            printf("\n\t");

             for(i=0;i<3;i++){
             printf("\n");
            for(j=0;j<3;j++){

             printf("%6d ",m[i][j]);

            }

            }
            posfila=0;
            poscolumna=0;
            int mayor=m[0][0];
            for(i=0;i<3;i++){
            for(j=0;j<3;j++){

             if(m[i][j]>mayor){
                   mayor=m[i][j];
             posfila=i;
             poscolumna=j;

            }
            }
            } printf("\n%d es el mayor y la posicion es [%d] [%d]\n",mayor,posfila,poscolumna);
      system("pause");
      return(0);

    }
#8
Hola, la verdad es que el código que voy a escribir aquí es un poco lioso, el problema es que al final del todo la matriz que me sale me da error entre medias de la matriz. Cómo hago para escribir la matriz de tamaño 3*3 de manera que al lado del final de cada fila esté la suma de dicha fila y así con todas las filas y lo mismo con las columnas?.Este es el código:
#include<stdio.h>
#include<stdlib.h>
             int main(void){
             int m[3][3],i,j;
             for(i=0;i<3;i++){
             for(j=0;j<3;j++){
              scanf("%d",&m[i][j]);
             }

             }
             printf("\n\t");

              for(i=0;i<3;i++){
              printf("\n");
             for(j=0;j<3;j++){

              printf("%6d ",m[i][j]);

             }

             }
             printf("\n");
               int suma1,suma2;
               int sumaf[3],sumac[3];
               for(i=0;i<3;i++){
                suma1=0;
                for(j=0;j<3;j++){
                    suma1=suma1+m[i][j];
                }
                sumaf[i]=suma1;
               }

               for(i=0;i<3;i++){
                printf("%d\n",sumaf[i]);
               }
                    for(j=0;j<3;j++){
                suma2=0;
                 for(i=0;i<3;i++){
                    suma2=suma2+m[i][j];
                } sumac[j]=suma2;
               }


              for(j=0;j<3;j++){
                printf("%d\n",sumac[j]);



             }
           printf("\n\t");
             for(i=0;i<3;i++){
                      printf("\n");
                for(j=0;j<3;j++){
                    printf("%d ",m[i][j]);
                    printf("%d ",sumaf[i]);
                }

             }  printf("\n");
             for(j=0;j<3;j++){

                printf("%d" ,sumac[j]);
             }


             system("pause");
             return(0);
             }
#9
Hola, tengo que hacer un programa en C que me diga si dos vectores son iguales. Esto es lo que yo he hecho: Podeis decirme mis fallos? Gracias
#include<stdio.h>
#include<stdlib.h>

int soniguales(int v[5],int a[5]){
    int i;
for(i=0;i<5;i++){
if(v[i]=a[i]) return 1;
else return 0;
}





}




    int main(void){
    int v[5],a[5],i;
    for(i=0;i<5;i++){
    scanf("%d",&v[i]);
    }
    for(i=0;i<5;i++){
    scanf("%d",&a[i]);
    }for(i=0;i<5;i++){
    if(soniguales(v[5],a[5])) printf("Son iguales\n");
    else printf("No son iguales\n");


    }

    system("pause");
    return(0);

    }
#10
Hola, me piden:  Realizar un programa que admita números en base 2 de 8 cifras, y los convierta al correspondiente valor decimal.
Yo lo he hecho así, pero me gustaría mejorarlo con un bucle for, no me dejan utilizar arrays. Gracias por la ayuda.
#include<stdio.h>
#include<stdlib.h>
     int main(void){
     int c1,c2,c3,c4,c5,c6,c7,c8,decimal;
     scanf("%d %d %d %d %d %d %d %d",&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8);
     decimal=c1*128+c2*64+c3*32+c4*16+c5*8+c6*4+c7*2+c8*1;
     printf("%d\n",decimal);




     system("pause");
     return(0);

     }
#11
Pues eso, tengo que hace un programa que me haga la suma de los 100 primeros números. Sé hacerlo en el main, pero a la hora de pasarlo a funciones no me sale.
En el main:
#include<stdio.h>
#include<stdlib.h>


     int main(void){
     int i,suma;
     suma=0;
     for(i=1;i<=100;i++){
suma=suma+i;
   
     }printf("%d\n",suma);

     system("pause");
     return(0);

     }


Con funciones he hecho esto, pero no sale:
#include<stdio.h>
#include<stdlib.h>

    int sumando(int i,int suma){

    suma=suma+i;
    return(suma);
    }

     int main(void){
     int i,suma;
     suma=0;
     for(i=1;i<=100;i++){
sumando(i,suma);
     }printf("%d\n",suma);



     system("pause");
     return(0);

     }




. Gracias de verdad.
#12
tengo que hacer este programa: Programa que lea números enteros y nos diga cuántos números son pares. en C utilizando el bucle while. Una ayuda por favor. Esto es lo que he hecho:
#include<stdio.h>
#include<stdlib.h>
    int main(void){
    int n;
    scanf("%d",&n);
    while(n<100) scanf("%d",&n);
        if(n%2==0) printf("%d es par\n",n);






    system("pause");
    return(0);


    }
#13
quiero hacer un programa que dado un número me calcule su cuadrado y su cubo. No me funciona del todo, una ayuda por favor.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
     int eleva(int x,int i,int elevador){
     for(i=2;i<=3;i++){
     elevador=  pow(x,i);
     }
     return(elevador);
     }




     int main(void){
     int x,i,elevador;
     scanf("%d",&x);
     for(i=2;i<=3;i++) printf("%d\n",eleva(x,i,elevador));


     system("pause");
     return(0);

     }
#14
Enunciado: Dos números amigos son dos números enteros positivos a y b tales que la suma de los divisores propios de uno es igual al otro número y viceversa, es decir σ(a)=b y σ(b)=a, donde σ(n) es igual a la suma de los divisores de n, sin incluir a n. (La unidad se considera divisor propio, pero no lo es el mismo número.)

Un ejemplo es el par de naturales (220, 284), ya que:

los divisores propios de 220 son 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y 110, que suman 284;
los divisores propios de 284 son 1, 2, 4, 71 y 142, que suman 220.
Si un número es amigo de sí mismo (es igual a la suma de sus divisores propios), recibe entonces el nombre de número perfecto.
 Mi programa me va bien a la hora de decir si dos números son amigos, el problema lo tengo a la hora de decir si es perfecto. Ayúdenme.
#include<stdio.h>
#include<stdlib.h>


     int pedir_numero(char mensaje[]){
       int n;
       printf("%s\n",mensaje);
       scanf("%d",&n);
       while(n<0){
         printf("%s\n",mensaje);
         scanf("%d",&n);
       }
       return(n);
     }

     int suma_divisores(int n){
     int i,r,suma;
      suma=0;
      for(i=1;i<n;i++){
        r=n%i;
        if(r%i==0) suma=suma+i;
      }
      return(suma);
     }

    int sonamigos(int n1,int n2){
      int suma1,suma2;

      suma1 = suma_divisores(n1);
      suma2 = suma_divisores(n2);
      if ((suma1==n2)&& (suma2==n1)) return 1;
      else return 0;
    }


      int perfecto(int n3){
int suma3;
      (suma3==suma_divisores(n3));
      if(suma3==n3) return 1;
      else return 0;


      }


int main(void){
int n1,n2,n3;
int suma;

n1=pedir_numero("Dime el primer numero\n");
n2=pedir_numero("Dime el segundo numero\n");

if (sonamigos(n1,n2)) printf("\nSi son amigos\n");
else printf("\nNo son amigos\n");
n3=pedir_numero("Dime el tercer numero y veremos si es perfecto\n");
if(perfecto(n3)) printf("%d es perfecto\n",n3);
else printf("%d no es perfecto\n",n3);
system("Pause");
return(0);
}




















Gracias, de verdad.
#15
Hola, ya he conseguido resolver el problema de la criba, ahora mi problema es que no sé cómo poner funciones para que sea mucho mejor el programa. Una ayuda por favor, para las funciones que se me dan horrible. Este es el programa en el main:
#include<stdio.h>
#include<stdlib.h>






    int main(void){
    int n;
    scanf("%d",&n);
    int v[n];
    int i,j,p;
    for(i=0;i<n;i++){
    v[i]=i;
    printf("%d\n",v[i]);
    }
for(i=2;i<n;i++){
for(j=2;i*j<n;j++){
v[i*j]=0;
}
     printf(" Tachando los multiplos con un 0: %10d\n",v[i]);
}     for(i=2;i<n;i++){
if(v[i]!=0) printf("Los numeros primos son: %4d\n",v[i]);

    }

    system("pause");
    return(0);

    }

Muchas gracias
#16
Realizar un programa que calcule los números primos entre 1 y N mediante la criba
de Eratóstenes. El sistema consiste en crear una tabla con los números del 2 a N. El
primer número no tachado (el 2) es primo. Tachar todos los múltiplos del 2. El primer
número no tachado (el 3) es primo. Tachar todos los múltiplos del 3. El primer número
no tachado (el 5) es primo. Tachar todos los múltiplos del 5.
     Mi problema es que no sé como "tachar" los múltiplos. Este es lo que yo llevo hecho:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
     int main(void){
int n;
     scanf("%d",&n);

      int v[n];
     int i;
     for(i=2;i<n;i++){
            v[i]=i;
printf("%d\n",v[i]);
     }
     for(i=2;i<n;i++){
        if(v[i]%i!=0) printf("\n%d\n",v[i]);

     }
     system("pause");
     return(0);

     }

#17
Escribir una función que busque en un vector de números el máximo valor, e indique
su valor y posición. Se supone que el vector está desordenado.
No me sale, esto es lo que hecho, ayuda por favor. Gracias :huh:





#include<stdio.h>
#include<stdlib.h>
#include<time.h>









int main(void){
int v[10];
int i;
int mayor=0;
srand(time(NULL));
for(i=0;i<10;i++){
v[i]=(1+rand()%10);

printf("%d\n",v[i]);
}
for(i=0;i<10;i++){
   if(v[i]>mayor){

       mayor=v[i];
       printf("%d es el mayor. Su posicion es %d\n",mayor,i);
   }
   }










system("pause");
return(0);
}
#18
 Pues eso, quiero invertir una cadena de caracteres, no me sale del todo correcto, esto es lo que he hecho. Una ayuda por favor.



#include<ctype.h>
int main(void){
char cad[10];
printf("introduzca un nombre\n");
scanf("%s",cad);
printf("El nombre leido es: %s\n",cad);

char cadinv[10];
int i, temp, len,ultimo;
ultimo = strlen(cad) - 1;
for(i=0; i <= strlen(cad); i++){
    temp = cadinv[i];
    cadinv[i]=cad[ultimo - i];
    cad[ultimo - i] = temp;
}





puts(cadinv);


  system("pause");
return(0);

}
#19
Cómo hago este ejercicio. He utlizado la función atoi pero al introducir una palabra como Perro, me da 0.
Diseña un programa que lea una cadena y copie en otra una versión cifrada. La cifrado convertirá cada letra (del alfabeto inglés) en la que le sigue en la tabla ASCII (excepto en el caso de las letras z y Z, que serán sustituidas por a y A, respectivamente.)
Gracias por responder mis dudas ::)
#20
Hola, quisiera hacer un programa que me muestre los 20 primeros multiplos del 5. Sé hacerlo en el main pero a la hora de hacerlo con modulares no me sale, alguien puede ayudarme por favor? :D. Esto es lo que yo he hecho:
Código (cpp) [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
  int multiplos(int i,int r){
   for(i=1;i<=20;i++){

       r=5*i;
   }
  return (r);


  }

 int main(void){
 int i,r;
 printf("%d\n",multiplos(i,r));

 system("pause");
 return(0);

 }


Mod: los códigos deben ir en etiquetas GeSHi