lunes, 1 de octubre de 2001

Descomposición en unidades múltiples de una cantidad sexagesimal dada en forma incompleja. Un ejercicio de programación en C/C++

//-----------------------------------------------------------------
// Descomposició en unitats múltiples

//
// Joan Aranes Clua
// data: 18/12/2001
// 
// En aquest exercici s'efectua la descomposició 
// d'una certa quantitat de segons en unitats múltiples
// t segons = d dies, h hores, m minuts i s segons
// 
//-----------------------------------------------------------------


#include <stdio.h>
#include <math.h>

void main ()
{
  //declaració de les variables globals
  // variable corresponent a la dada d'entrada
  unsigned int t;  // quantitat de temps en segons 
  //
  // variables corresponents a les dades de sortida
  unsigned int d;		 // quantitat de dies 
  unsigned int h;		 // quantitat d'hores residual
  unsigned int m;		 // quantitat de minuts residual
  unsigned int s;		 // quantitat de segons residual
  
  
  //entrada de la quantitat de temps en segons
  printf("-----------------------------------\n");
  printf("Entreu una quantitat de temps en segons\n");
  scanf("%u",&t);
  
  //
  s = t%60;
  m = (int(t/60))%60;
  h = (int(t/(60*60)))%24;
  d = int(t/(60*60*24));

  // sortida: temps expressat en forma complexa
  printf("-----------------------------------\n");
  printf("\n%d dies\n",d);
  printf("\n%d h\n",h);
  printf("\n%d min\n",m);
  printf("\n%d s\n\n",s);
    
}

Implementación del algoritmo de Euclides. Cálculo del máximo común divisor de dos números enteros positivos. Un ejercicio de programación en C/C++

/////////////////////////////////////////////////////////////////
// Algorisme d'Euclides                                        //
// Cálcul del máxim comú divisor de dos nombres enters positius//
// Joan Aranès Clua			                                   //		
// 17/12/2001				                                   //		
/////////////////////////////////////////////////////////////////
 

#include <stdio.h>
int mcd(int,int);


void main(){
    int m,n;

    printf("Introduïu dos nombres enters separats per un espai\n");

    scanf("%d %d",&m,&n);
    printf("\n\nmcd(%d,%d) = %d\n",m,n,mcd(m,n));

}

int mcd(int x,int y)
{

    int reste; // reste i quocient de les divisions
	int dividend,divisor;

	// DIVISIONS SUCCESSIVES
	// primera divisió:
      dividend=(x>y)?x:y;
	divisor=(y<x)?y:x;
	reste=dividend%divisor;
	// per a les divisions següents
	// s'asigna al nou divisor  el valor de l'antic reste
	// fins arribar a una divisió amb reste nul
	// el divisor d'aquesta darrera divisió és el m.c.d.{x,y}
      while(reste>0)
	 {
	  dividend=divisor;
	  divisor=reste;
        reste=dividend%divisor; //         
       }

    return divisor;

}



Cálculo del máximo común divisor de tres números enteros positivos. Un ejercicio de programación en C/C++

//-----------------------------------------------------------------
// m.c.d. de tres nombres enters positius 
// 
// Joan Aranès Clua
// data: 17/12/2001
// 
// Aquest programa calcula el m.c.d.{m,n,p}
//-----------------------------------------------------------------

#include <stdio.h>

//declaració de la funció que calcula el m.c.d. de dos n. enters positius:
int mcd(int,int);
// 

void main()
{
    int m,n,p; // variables corresponents a les dades d'entrada

    printf("Introdu\x08Bu tres nombres enters separats per un espai\n");
    scanf("%d %d %d",&m,&n, &p);
    printf("\n\nmcd(%d,%d,%d) = %d\n",m,n,p, mcd(mcd(m,n),p));
}



int mcd(int x,int y)
{

    int reste; // reste i quocient de les divisions
	int dividend,divisor;

	// DIVISIONS SUCCESSIVES
	// primera divisió:
      dividend=(x>y)?x:y;
	divisor=(y<x)?y:x;
	reste=dividend%divisor;

	// per a les divisions següents
	// s'asigna al nou divisor  el valor de l'antic reste
	// fins arribar a una divisió amb reste nul
	// el divisor d'aquesta darrera divisió és el m.c.d.{x,y}

    while(reste>0)
	{
		dividend=divisor;
		divisor=reste;
            reste=dividend%divisor; //         
      }

    return divisor;

}


Cálculo del área de un triángulo. Un ejercicio de programación en C/C++

//-----------------------------------------------------------------
// Àrea d'un triangle 
//
// Joan Aranès Clua
// data: 18/12/2001
// 
// En aquest exercici es tracta de fer un programa 
// que calculi l'àrea d'un triangle qualsevol (expressada en unitats arbitràries) 
// a partir de les coordenades dels vèrtexs.
// El procediment per calcular l'àrea que es farà servir consisteix a 
// calcular la meitat del mòdul del producte vectorial del parell 
// de vectors amb origen comú en un dels vèrtexs del triangle
// 
//-----------------------------------------------------------------


#include <stdio.h>
#include <math.h>


void main ()

{
  // variables corresponents a les dades d'entrada
  double x_1,y_1;  // coordenades x i y del punt A_1
  double x_2,y_2;  // coordenades x i y del punt A_2
  double x_3,y_3;  // coordenades x i y del punt A_3
  // variables auxiliars
  double modul;
    
  //definició del triangle:
  //entrada de les coordenades x i y dels vèrtexs A_1, A_2 i A_3
  printf("-----------------------------------\n");
  printf("Entreu les coordenades x_1 i y_1 del punt A_1, separades per un espai\n");
  scanf("%lf %lf",&x_1, &y_1);
  printf("\nEntreu les coordenades x_2 i y_2 del punt A_2, separades per un espais\n");
  scanf("%lf %lf",&x_2, &y_2);
  printf("\nEntreu les coordenades x_1 i y_1 del punt A_1, separades per un espais\n");
  scanf("%lf %lf",&x_3, &y_3);
  
  // càlcul del mòdul del producte vectorial u.v
  // on el vector u és (x_1-x_2,y_1-y_2)
  // i el vector v és (x_3-x_2,y_3-y_2)
  modul =(x_1-x_2)*(y_3-y_2)-(y_1-y_2)*(x_3-x_2);

  // ara, es calcula i es mostra l'àrea (0.5*modul)
  printf("\nA=%.4lf\n",modul/2);


}

Ejercicio básico de estadística descriptiva. Un ejercicio de programación en C/C++

//-----------------------------------------------------------------
// Paràmetres estadístics amb tres valors de la v.e. 
//
// Joan Aranès Clua
// data: 16/12/2001
// 
// En aquest exercici es tracta de fer un programa 
// que calculi la mitjana aritmètica, la mitjana geomètrica, 
// la variança i la desviació típica d'un conjunt de tres dades
// emprant la crida a funcions específiques 
// 
//-----------------------------------------------------------------


#include <stdio.h>
#include <math.h>

double mitjaa(double,double,double); //mitjana aritmètica
double mitjag(double,double,double); //mitjana geomètrica
double var(double,double,double);    //variància 

void main ()

{
  //declaració de les variables globals
  double x_1,x_2,x_3;  // valors de la v. estadística X
  
    
  //definició del rectangle n files x m columnes
  printf("-----------------------------------\n");
  printf("Entreu tres valors: x_1 x_2 x_3, separats per espais\n");
  scanf("%lf %lf %lf",&x_1, &x_2, &x_3);
  
  
  //càlcul dels paràmetres: mitjana aritmètica, mitjana geomètrica 
  //                        i variància
  printf("-----------------------------------\n");
  printf("la mitjana aritm\x08Atica \x082s igual a %.2lf\n",mitjaa(x_1,x_2,x_3));
  printf("-----------------------------------\n");
  printf("la mitjana geom\x08Atrica \x082s igual a %.2lf\n",mitjag(x_1,x_2,x_3));
  printf("-----------------------------------\n");
  printf("la vari\x085ncia és igual a %.2lf\n",var(x_1,x_2,x_3));
  
}


double mitjaa(double a,double b,double c)
//mitjana aritmètica
{
    double m_a;
    m_a = (a+b+c)/3.;
    return m_a;
}


double mitjag(double a,double b,double c)
// mitjana geomètrica
{
    double m_g;
    m_g = pow(a*b*c,1./3);
    return m_g;
}

double var(double a,double b,double c)
// variància
{
    double v;
    v = mitjaa(a*a,b*b,c*c)-pow(mitjaa(a,b,c),2);
    return v;
}

Resolución de una ecuación polinómica de segundo grado. Un ejercicio de programación en C/C++

//-----------------------------------------------------------------
// L'equació de	2n grau amb discriminant més gran que zero
// alumne:   Joan Aranès Clua
// data: 20/11/2001
// 
// Aquest programa calcula les solucions reals d'una equació
// polinòmica de 2n grau que, per conveni, 
// té discriminant positiu o nul. Per això, quan s'entrin
// els coeficients de l'equació cal escollir-los per tal que 
// es compleixi aquest requeriment
//-----------------------------------------------------------------

#include <stdio.h>          //printf i scanf
#include <stdlib.h>         //system() .. per a la f. cls
#include <math.h>			// càlculs

void main()
{

    double a,b,c;  // coeficients de l'equació (dades d'entrada)
    double disc;   // discriminant positiu o nul
	double x1,x2;  // solucions reals de l'equació  

    system("cls"); //esborra la pantalla

	// entrada dels coeficients
	printf("\nintrodu\x08Bu el coeficient a: \n");
	scanf("%lf",&a);
	printf("\nintrodu\x08Bu el coeficient b :\n");
	scanf("%lf",&b);
	printf("\nintrodu\x08Bu el coeficient b :\n");
	scanf("%lf",&c);

    // càlcul del discriminant
	disc=sqrt(b*b-4*a*c); 

	// càlcul de les solucions
	//   cas que disc = 0, la solució serà única, amb multiplicitat dos.
	x1=(-b+sqrt(disc))/2/a;
	x2=(-b-sqrt(disc))/2/a;

	// solucions:
	printf("x1 = %.4lf \n",x1);
	printf("x2 = %.4lf \n",x2);
	
}