Mostrando entradas con la etiqueta C. Mostrar todas las entradas
Mostrando entradas con la etiqueta C. Mostrar todas las entradas

viernes, 1 de octubre de 2021

Punto interior/exterior a una circunferencia. Un ejercicio de programación en C/C++

//-----------------------------------------------------------------
// Verificació de condicions amb operadors relacionals 
//
// Joan Aranès Clua
// data: 15/12/2001
// 
// Pertany el punt (x,y) al cercle de centre (a,b)  i radi r ?
//-----------------------------------------------------------------

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

void main ()

{

  double a,b,r,x,y;
  double dist2;//distància euiclidiana al quadrat entre P(x,y) i O(a,b)

    
  //definició de la circumferència -> cercle
  printf("-----------------------------------\n");
  printf("Definiu una circumfer\x08Ancia donant el centre i el radi:\n");
  printf("introdu\x08Bu les coordenades del centre de la 
     circumfer\x08Ancia: a i b, separades per un espai:\n");
    scanf("%lf %lf",&a, &b);
  printf("introdu\x08Bu el valor del radi de la circumfer\x08Ancia r:\n");
    scanf("%lf",&r);

  
  //definició del punt P(x,y) interior o exterior a la circumferència
  printf("-----------------------------------\n");
  printf("Pertany el punt P(x,y) al cercle de centre O(a,b) i radi r ?\n");
  printf("introdu\x08Bu les coordenades del punt P: x i y, 
     separades per un espai:\n");
    scanf("%lf %lf",&x, &y);
  
  printf("\n");
  printf("Si el punt P \x082s interior a la c. escriur\x085 un 1,en cas\n");
  printf("contrari escriur\x085 un 0 ....\n");
  printf("\n");
  
  // càlcul de la distància al quadrat entre el centre de la c. i el punt	
  dist2=pow((x-a),2)+pow((y-b),2);

  printf("resposta:\n");
  printf("%d\n",dist2<=pow(r,2));

  }

El algoritmo 3n+1. Conjetura de Collatz. Un ejercicio de programación en C/C++

//-----------------------------------------------------------------
// CICLE d'un nombre enter. L'algoritme 3n+1  
// 
// Joan Aranès Clua
// data: 17/12/2001
// 
// Aquest programa calcula el "cicle" d'un nombre n
// el qual es calcula de la manera següent:
// 1. s'entra n 
// 2. es mostra n 
// 3. si n =1 
// 4.   aleshores ACABA EL PROGRAMA  
// 5. si n es senar aleshores n:=3n+1 
// 6. en cas contrari, és a dir, si n és parell, aleshores n:=n/2 
// 7. tornar a la línia 2 
//---------------------------------------------------------------------
// exemple 1. cicle(22) = {22, 11, 34, 17, 52, 26, 13, 
                          40, 20, 10, 5, 16, 8, 4, 2, 1}
// es tracta d'un cicle de longitud 16
// --------------------------------------------------------------------
// EXEMPLES AMB POTÈNCIES DE ^2: 2^x
// exemple 2. cicle(32) = {32, 16, 8, 4, 2, 1}
// exemple 3. cicle(64) = {64, 32, 16, 8, 4, 2, 1}
// ...
// exemple 4. cicle(1024) = {1025, 512, 256, 128, 
                            64, 32, 16, 8, 4, 2, 1}
// ...
//    Cal observar que:
//		1r Efectivament, les longituds dels cicles de les potències de 2 
           són relativament curtes
//      2n longitud_del_cicle(2^x) = x+1
//-----------------------------------------------------------------

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

void main()
{

    int n;  // variable corresponent a la dada d'entrada
    int m;  // variable auxiliar
	int longitud; // variable per mesurar la longitud del cicle

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

	// entrada dels coeficients
	printf("\nintrodu\x08Bu un nombre enter:\n");
    printf("n=");
	scanf("%d",&n);
	printf("\ncicle(%d)=",n);

	m=n;
	longitud=1;
	while (m>1)
	{
		printf("%d ",m);
		if ((m%2)!=0) 
			m=3*m+1;
		else 
			m=m/2;
		longitud=longitud+1;
		
    }
	printf("%d ",m);
		
	printf("\nlongitud del cicle(%d)=%d",n,longitud);
	printf("\n\n");
} 

Encriptación de un texto por sustitución monoalfabética. Un ejercicio en C/C++

//////////////////////////////////////////
// Còpia encriptada per substitució monoalfabètica
// Joan Aranès Clua
// 7/04/2002
//////////////////////////////////////////


// MANEIG DE L'EXECUTABLE:
//
// Cal posar-nos a la consola del DOS 
// i anar al directori on es troba l'executable m8e1.exe
// seguint els següents passos:
// 1. generem un fitxer de prova fent, per exemple,
//	1.1.: %>copy con prova.txt
//			aixo es una prova
//          CTRL+Z (insereix la marca de final d'arxiu EOF)
// 2. executem el programa que genará un segon arxiu amb el missatge encriptat 
//    el nom del qual haurem de triar (p.ex: 'arxiu2.txt') fent: 
//	2.1.: %>m8e1 prova.txt prova2.txt
// 3. comprovar el contingut del fitxer generat 
//        %>type prova2.txt




    #include <stdio.h>
	#include <ctype.h>

    
	void main(int argc, char *argv[]){
         FILE *origen, *desti;
         char car;
		 int codi; //codi de substitució


         if(argc!=3){
            printf("S'ha d'especificar arxiu origen i arxiu destí\n");
            return;
         }

		 printf("\n\nintroduïu el codi (0-25)...\n");
		 scanf("%d", &codi);

         origen=fopen(argv[1],"rb");//fitxer de lectura i binari
         desti=fopen(argv[2],"wb");// fitxer d'escriptura i binari
         if (origen==NULL || desti==NULL){
             printf("no es pot realitzar l'operació\n");
             return;
         } 
         car=getc(origen);
         while(!feof(origen)) 
			 // llegeix en el fitxer origen fins trobar
			 // la marca EOF de final d'arxiu
		 {
			 if (car!=' ') 
				 // si no es tracta d'un espai en blanc 			    				 
				{
				 car =(tolower(car)-97+codi)%26+97;
				}
           putc(car,desti); // també copia els espais 
           car=getc(origen);
         }
         fclose(origen);
         fclose(desti);
     }