elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / metodo de newton rapson para calcular las raices de una funcion con n grado en: 29 Septiembre 2011, 15:37 pm
hola estoy haciendo un programa en dev c++ para hallar las raices de una funcion con el metodo de newton rapson, ya la supe hallar para cuando es de grado 2 la funcion y me quedó asi:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#include <time.h>

double funcion (double x);
double derivadaf (double x);

main()
{
   int Nit, i;
   double cota,xi,xsol,error;

   printf("Metodo de Newton-Raphson\n");
   printf("Cota de error maxima: ");
   scanf ("%lf",&cota);
   printf ("Numero maximo de iteraciones: ");
   scanf ("%d",&Nit);
   printf ("Punto inicial: ");
   scanf ("%lf",&xi);

   i = 1; /* Contador de iteraciones */
   error = cota + 1 ; /* Para asegurar que error > cota al ppio */

   while (i<= Nit && error > cota)
   {
      /* Aplicamos formula Newton-Raphson */
      xsol = xi - funcion (xi) / derivadaf(xi);
      error = fabs (xsol-xi);
      i++;
      /* En la siguiente iteracion xsol es xi */
      xi = xsol;
   }

   printf ("La solucion es %lf\n", xsol);
   printf ("El valor de la funcion es %g\n",funcion(xsol));
   printf ("El error alcanzado es %g\n", error);
   if (i>=Nit)
      printf ("Se ha alcanzado el maximo n. de iteraciones\n");
   else
      printf ("El n. de iteraciones ha sido %d\n",i);
      getch();
}
double funcion(double x)
{
   double f;
   f = x*x + 2*x - 35;
   return (f);
}

double derivadaf(double x)
{
   double fp;
   fp = 2*x + 2;
   return (fp);

}
el problema es que como hago ahora para hacer este programa pero que me calcule cualquier funcion con grado n, intente hacerlo del siguiente modo con vectores, pero la verdad no se como poner el formato de la ecuacion ni la derivada?? alguien me puede guiar ayuda.

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#include <time.h>
//vetor grado 3   posiciones, grado 5 -5 posiciones

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#include <time.h>

double funcion (double x);
double derivadaf (double x);

main()
{
   int Nit, i;
   double cota,xi,xsol,error;

   printf("Metodo de Newton-Raphson\n");
   printf("Cota de error maxima: ");
   scanf ("%lf",&cota);
   printf ("Numero maximo de iteraciones: ");
   scanf ("%d",&Nit);
   printf ("Punto inicial: ");
   scanf ("%lf",&xi);

   i = 1; /* Contador de iteraciones */
   error = cota + 1 ; /* Para asegurar que error > cota al ppio */

   while (i<= Nit && error > cota)
   {
      /* Aplicamos formula Newton-Raphson */
      xsol = xi - funcion (xi) / derivadaf(xi);
      error = fabs (xsol-xi);
      i++;
      /* En la siguiente iteracion xsol es xi */
      xi = xsol;
   }

   printf ("La solucion es %lf\n", xsol);
   printf ("El valor de la funcion es %g\n",funcion(xsol));
   printf ("El error alcanzado es %g\n", error);
   if (i>=Nit)
      printf ("Se ha alcanzado el maximo n. de iteraciones\n");
   else
      printf ("El n. de iteraciones ha sido %d\n",i);
      getch();
}
double funcion(double x)
{
    int i=0, g=0;   
   double f, j[100], v=0;
   printf ("digite el grado de la ecuacion:  \n" );
    scanf("%d", &g );
    g++;
    for(i=0; i<=g; i++)
    {
      printf ("digite el valor de variable:  \n" ); 
      scanf("%f", &v);   
     j=j+v;
    }
     
   f =
   return (f);
   
}
double derivadaf(double x)
{
   double fp;
   fp =
   return (fp);

}
2  Programación / Programación C/C++ / ayuda en operacion con matriz en: 11 Septiembre 2011, 22:00 pm
hola tengo el siguiente programa,  que guarda 4 numeros en una matriz, pero quiero realizar una division entre el numero que se encuentra guardado en matris[1][1] y el total de columna que sería asi:  P= matris[1][1]/totalc, el problema es que en la impresion de este resultado siempre me vota r=0.0, que hacer ayuda.... a continuacion envio mi codigo para que me indiquen en que estoy fallando.
 
int f,c,nume,sum=0, sumf=0, totalf=0, totalc=0;
 double P=0, a=0;
int matris[2][2],fil[2],col[2]; // matris= matriz fil= filas col=columnas


printf("\n PROBABILIDAD CONDICIONAL" );
printf("\n");


 for(f=0; f<2; f++)
 {
 for(c=0; c<2; c++)
 {
 printf("\n Introduzca la cantidad de moleculas "); 
 scanf("%d",&nume);
 matris[f][c]=nume;
 }
 }
// printf("\n ");
printf("\n Matriz 2x2 ");
for(f=0; f<2; f++)
{
printf("\n ");
for(c=0; c<2; c++)
{
  printf("\n ");   
 printf(" %d", matris[f][c]);
}
printf("\n ");
}




for(f=0; f<2; f++)
{
for(c=0; c<2; c++)
{
sumf=matris[f][c]+sumf; //suma de las filas

}
printf("\n Suma de los elementos por Filas: %d", sumf);
fil[f]=sumf;
totalf=totalf+fil[f];
//printf("\n Suma total Fila 1: %d", totalf);
sumf=0;

}
printf("\n Suma total de las Filas 1 y 2: %d", totalf);


//cargar el vector por columnas
for(c=0; c<2; c++)
{
for(f=0; f<2; f++)
{
sum=matris[f][c]+sum; //suma de las columnas
}
printf("\n Suma de los elementos por columnas %d", sum);
col[c]=sum;
totalc=totalc+col[c];
sum=0;
}
printf("\n Suma total columnas 1 y 2: %d", totalc);
printf("\n Suma total fila 2: %d", fil[1]);
printf("\n");
a= (fil[1]/totalc);
printf("Pa: %5.1lf\n",a);
printf("\n");
 P=((matris[1][1])/(totalc));
printf("P(B¦A): %f\n",P);

printf("matriz i.i: %d\n",matris[1][1]);



getch();

}
3  Programación / Programación C/C++ / explicacion del programa que genera pi en: 10 Septiembre 2011, 19:13 pm
hola necesito que me ayuden a entender el funcionamiento del siguiente programa, es el método montecarlo para hallar pi:

// se que  en esta parte se inician variables
double x,y;
  int  cantidad=0;
  double r, contador=0;
  double pi, media=0.0, varianza, desviacion;
  double suma = 0.0;

  printf("ingrese el numero de iteraciones: ");
  scanf("%d",&cantidad);
   srand(time(NULL));

     for ( contador=1; contador<cantidad; contador++)
   {
      x = (double)rand()/RAND_MAX;// en esta parte no se para que se hizo
      y = (double)rand()/RAND_MAX;
      r = x*x+y*y;// esto es para que tome los cuatro cuadrantes??
     
      if (r<=1)// en esta parte para que tome los menores a uno pero para que se hace??
       {
         contador++;//la cantidad y el contador que acumula?
         cantidad++;
         pi=contador*4/cantidad;//por que pi se hallo de ese modo?
   if(pi>=3.0){ //conque fin se hizo este if
   
         suma = suma + pi; //bueno aqui supongo que es para sumar todos los numero aleatorios que se generan
        media = suma/(double)cantidad ;
        varianza = ((suma - media)*(suma-media))/cantidad;
        desviacion = sqrt(varianza); }  //aqui supongo que se saco la raiz de varianza para hallar la desviacion
     }
       
   }
    printf("pi vale %20.14Lf\n",pi);
    printf("La media es %lf\n", media);
   
    printf("la varianza vale %20.14Lf\n",varianza);
    printf("la desviacion vale %20.14Lf\n",desviacion);
   

getch();
}
4  Programación / Programación C/C++ / error en hallar media en: 28 Agosto 2011, 17:54 pm
hola hice un programa que calcule pi por el metodo de montecarlo, trate de hallar la media, la varianza y la desviacion de los numeros aleatorios generados, pero la media me da muy baja y la desviacion muy alta, hice un if para hallar la media a partir de los numeros mayores a 3.0 pero me sigue dando muy baja, me dijeron que para lo que quiero hacer tengo que guardar los numeros generados en un arreglo y de ahi escoger los mayores a 3.0 para hallar la media, pero la verdad nunca he trabajado con arreglos, alguien me puede explicar.. ayuda porfa.
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#include <time.h>
int main()
{
   int cantidad;
   double x,y;
   int i;
   double z, contador=0;
   double pi, media, suma, varianza, desviacion;
 
   printf( "Cuantas iteracciones desea hacer: ");
     scanf("%d",&cantidad);
 
   srand(time(NULL));
   for ( contador=0; contador<cantidad; contador++)
    {
      x = (double)rand()/RAND_MAX;
      y = (double)rand()/RAND_MAX;
      z = x*x+y*y;
   
      if (z<=1)
      {
       contador++;
       cantidad++;
       pi=contador*4/cantidad;
       suma = suma + pi;     
     
       if(pi>=3.0){
   
         suma = suma + pi;
        media = suma/(double)cantidad ;
        varianza = ((suma - media)*(suma-media))/cantidad;
        desviacion = sqrt(varianza); } 
       }
      }   
     
   
      printf("La media es %lf\n", media);
     printf("la varianza vale %20.14Lf\n",varianza);
    printf("la desviacion vale %20.14Lf\n",desviacion);
   getch(); 
 
}
5  Programación / Programación C/C++ / eror al leer archivo en: 27 Agosto 2011, 01:03 am
hola quiero hacer un programa en dev c++ que lea un archivo txt Luego se escriben en el archivo diez números enteros elegidos al azar. Cada vez que se ejecute el programa, se añadirán otros diez números al azar al final del archivo. pero me sale error en  fich  el msn es: conflicting types for fich, previous declaration of fich was here, tambien me aparece error cuando uso fprintf: conflicting type for fprintf, fstream:no such file or directory..  por otro lado quisiera hallar la desviacion de todos los datos que hay en el archivo pero esa partecita si no se como hacerla.....ayuda... 5 estrellas
#include <iostream>
#include <fstream>
#include <stdio.h>


FILE *fich;
   int i, N;
   fich = fopen("ejemplo.txt", "at");
   if (fich == NULL)
      printf("Error al abrir el archivo");
   else
   {
      for (i = 0; N < 10; i++)
      {
         N = random(1000)+1;
         fprintf(fich, "%i\n", N);
      }
      fclose(fich);
   }
6  Programación / Programación C/C++ / error cuando compilo- dev c++ en: 14 Agosto 2011, 22:44 pm
hola
tengo que hacer un programa donde genere numeros aleatorios, donde cada vez que digite más lanzamientos se acerque más al numero pi, el problema es que en mi programa me sale un error que dice: " conio: No such file or directory. " y no me corre, al principio me salia error cuando usaba cou, luego despues de intentar de varias formas preferi cambiarlo por printf, pero salia error decidi usar cout pero agregandole using::cout; y dejo de salir error pero ahora me sale es el que les dije ayudaaaa....no se como hacer para que me funcione bien el programa.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <cstdlib>
using std::system;
#include <conio>

int main( )
{
double pi = 0, sijno=1;

for (double i = 1; i < 99999; i+=2)
{
pi=pi+(4/i)*sijno;
sijno =sijno*-1;
}
cout<< "PI = " << pi<<"\n";
//printf("PI = ", pi);

//std::cin.get();
//return 0;
//getch();
system("pause");
// return 0;

}
7  Programación / Programación C/C++ / programa c++ en: 3 Abril 2011, 00:27 am
hola quiero crear un programa que capture un archivo.cpp y me diga el numero de lineas, el numero de variables y que tipo de variables son(int, float, char), ya pude capturar el archivo y contar las lineas pero no se como contar las variables ayuda!!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
void main()
{
 clrscr();
 FILE *archivo;
 int v_c;
 int v_contador=0;
 int v_contador2=0;
 int v_contador3=0;
 char v_nombre[25];

 char *aray[4];
 int i;
 aray[0] = strdup("if");
 aray[1] = strdup("for");
 aray[2] = strdup("while");
 aray[3] = strdup("else");


 printf("Digite el nombre del archivo, con su respectiva extensión\n");
 scanf("%s",v_nombre); //El usuario ingresa el nombre
 archivo = fopen(v_nombre, "r"); //Abrimos el archivo

 if (archivo == NULL) //En caso de que no exista el archivo
 {
  printf("El archivo no existe \n");
  exit (EXIT_FAILURE);
 }
 else
 {
  while (v_c!=EOF)
  {
   v_c = getc(archivo); // Obtiene un caracter del archivo
   putchar(v_c); // Lo despliega en pantalla y continua..

   if (v_c==59) // valor Accii del punto y coma ";"
   {
    v_contador++;
    
   }
   if (v_c==125)
   {
   v_contador2++;
   }
   if(v_c==32||v_c==10) //Contador de palabras
   {
    v_contador3++;
   }
  }

  fclose(archivo); // Cerramos el Archivo de texto
  printf("\n\n\n\n El numero de Lineas que termina en ; es: %d",v_contador);
  printf("\n # de lineas que finalizan en %d",v_contador2);
  printf("\n # de Palabras es: %d",v_contador3);

 }
 getch();
}

Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines