jueves, 4 de agosto de 2016

Capítulo 58. Ejercitando lo aprendido en C++. Parte 2

Diario de un programador.- Dia 137

9.- Escriba un programa que muestre la tabla de multiplicar del 1 al 10 del número ingresado por el usuario:

#include<iostream>
#include<stdio.h>

using std::cout;
using std::cin;
using std::endl;

void Tabla(int);
void Tabla(int numero){
 int i;
 for(i = 1; i<=10; i++){
   printf("%d x %d = %d\n",numero, i, (i * numero) );
 }
}

int main(void){

  int numero;
  cout << "Ingresa un numero: ";
  cin >> numero;
  Tabla(numero);

return 0;

}


10.- Escriba un programa que pida al usuario dos números enteros, y luego entregue la suma de todos los números que están entre ellos. Por ejemplo, si los números son 1 y 7, debe entregar como resultado 2 + 3 + 4 + 5 + 6 = 20.

#include<iostream>
#include<stdio.h>

using std::cout;
using std::cin;
using std::endl;

int main(void){

  int num1, num2, i,j, aux = 0;

  cout << "Sumatoria entre dos numeros" << endl;

  cout << "Ingresa un numero: ";
  cin >> num1;

  cout << "Ingresa otro numero: ";
  cin >> num2;

  for(i = (num1 + 1); i < num2; i++){
    aux = aux + i;
  }//fin for

  for(j = (num1 + 1); j < num2; j++){
    if(j == (num2 - 1)){
      printf("%d = ", j);
    }//fin if
    else{
      printf("%d + ", j);
    }//fin if
  }//fin for

  printf("%d\n", aux);

return 0;
}


11.- Escriba un programa que muestre una tabla de multiplicar como la siguiente:

 1     2    3    4     5    6     7    8    9  10
 2     4    6    8   10  12  14  16  18  20
 3     6    9   12  15  18  21  24  27  30
 4     8  12  16  20   24  28  32  36  40
 5   10  15  20  25   30  35  40  45  50
 6   12  18  24  30   36  42  48  54  60
 7   14  21  28  35   42  49  56  63  70
 8   16  24  32  40   48  56  64  72  80
 9   18  27  36  45   54  63  72  81  90
10  20  30  40  50   60  70  80  90 100

#include<iostream>
#include<stdio.h>

int main(void){

 int a,b;

 for(a = 1; a <= 10; a++){
    for(b = 1; b <= 10; b++){
      if(a * b < 10){
        printf("%d  ", a * b);
      }
      else{
        printf("%d ", a * b);
      }
      if(b == 10){
        printf("\n");
      }
    }//fin for b
  }//fin for a


return 0;
}


Diario de un programador.- Dia 138

12.- Escriba un programa que entregue  los divisores del número entero ingresado. Ej:
Si el usuario ingresa un 20, el programa responde:
20, 10, 5, 4, 2
Se omite el 1 ya que todos los número son divisibles por 1 y a pesar de que todos los números son divisibles por sí mismo, debe ser agregado de igual forma.

#include<iostream>
#include<stdio.h>
using std::cout;
using std::cin;
using std::endl;

int main(void){

   int num, i, divisor = 0, iterar = 0, aux = 0;

   cout << "DIVISORES" << endl;

   cout << "Ingresa un numero: ";
   cin >> num;

   if(num % 2 == 0){
     iterar = num / 2;
   }
   else{
     iterar = (num - 1) / 2;
   }
   for(i = 1; i <= iterar; i++){
     if(num % i == 0){
       aux = num / i;
       if(aux != divisor){
         divisor = aux;
       }
       if(i == iterar){
         printf("%d", divisor);
       }
       else{
         printf("%d,",divisor);
       }
      }
    }//fin for

return 0;
}


13 Escriba un programa que pida al usuario ingresar la altura y el ancho de un rectángulo y lo dibuje utilizando asteriscos:
Alto: 3
Ancho: 4

****
****
****

#include<iostream>
#include<stdio.h>
using std::cout;
using std::cin;
using std::endl;

int main(void){

  int alto, ancho, a, b;

  cout << "Rectangulo de asteriscos" << endl;

  cout << "Alto: ";
  cin >> alto;

  cout << "Ancho: ";
  cin >> ancho;

  for(a = 1; a <= alto; a++){
    for(b = 1; b <= ancho; b++){
      printf("*");
    }
      printf("\n");
  }

return 0;
}


Diario de un programador.- Dia 139

14 Escriba un programa que dibuje el triángulo del tamaño indicado por el usuario de acuerdo al ejemplo:
Altura: 5

*
**
***
****
*****
#include<iostream>
#include<stdio.h>
using std::cout;
using std::cin;
using std::endl;

int main(void){

  int alto, x, g;

  cout << "Triangulo de asteriscos" << endl;

  cout << "Alto: ";
  cin >> alto;

  for(x = 1; x <= alto; x++){
    for(g = 1; g <= alto; g++){
      if(g <= x){
        printf("*");
      }
    }//fin for g
    printf("\n");
  }//fin for x

return 0;
}


15.- Escriba un programa que determine la cantidad de dígitos en un número natural ingresado por el usuario:
Ingrese numero: 12345
12345 tiene 5 digitos

//transformando el numero a cadena y luego
//contarlo con strlen

#include<iostream>
#include<stdio.h>
#include<string.h>

using std::cout;
using std::cin;
using std::endl;

int main(void){

  int num, contar;
  char cadena[100];

  cout << "Ingresa un numero: ";
  cin >> num;

  sprintf(cadena, "%d", num);
  contar = strlen(cadena);

  printf("Tiene %d digitos\n", contar);

return 0;
}



Esto es todo en cuanto a ejercicios en C++. Para el próximo capítulo seguiré con python. Saludos

Gustavo J. Cerda Nilo
Febrero 2016, Agosto 2016




miércoles, 3 de agosto de 2016

Capítulo 58. Ejercitando lo aprendido en C++. Parte 1

Diario de un programador.- Dia 131


Al igual que en la clase de C, es hora de realizar unos ejercicios para practicar y comprobar lo aprendido. Como se podrán dar cuenta, son mucho menos los ejercicios propuestos aquí ya que solamente dejé los más relevantes para no aburrir tanto con el tema, después de todo, si se logró hacer  en small basic, esto no debería presentar mayor dificultad.

1.- Escriba un programa que calcule el promedio de 5 números ingresadas por el usuario:
#include<iostream>
#include<stdio.h>

using std::cout;
using std::cin;
using std::endl;

int main(void){
  int i, numero, suma = 0;
  float promedio;

  for(i = 1; i <= 5; i++){
     printf("Ingreso nro.%d: ", i);
     cin >> numero;
     suma = suma + numero;
  }//fin for
  promedio = suma / 5;

  cout << "El promedio es " << promedio << endl;

return 0;

}


Diario de un programador.- Dia 132


2.- Escriba un programa que pida al usuario un entero de tres dígitos, y entregue el número con los dígitos en orden inverso:
            Ej. El usuario escribe 123 y el programa responde 321

#include<iostream>
#include<stdio.h>

using std::cout;
using std::cin;
using std::endl;

int main(void){

  int numero, centena, decena, unidad;

  cout << "Ingresa un numero de 3 digitos: ";
  cin >> numero;

  centena = numero / 100;
  decena = (numero % 100) / 10;
  unidad = (numero % 100) % 10;

  printf("%d%d%d\n", unidad, decena,centena);

return 0;
}
//escrito por: Gustavo Cerda Nilo, Febrero 2016


Diario de un programador.- Dia 133

3.- Escriba un programa que reciba como entrada las longitudes de los dos catetos a y b de un triángulo rectángulo, y que entregue como salida el largo de la hipotenusa c del triángulo, dado por el teorema de Pitágoras: c2=a2+b2.

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

using std::cout;
using std::cin;
using std::endl;

int main(void){

  int catetoA, catetoB, sumaCatetos;
  float hipotenusa;

  cout << "Ingresa el primer cateto: ";
  cin >> catetoA;

  cout << "Ingresa el segundo cateto: ";
  cin >> catetoB;

  catetoA = catetoA * catetoA;
  catetoB = catetoB * catetoB;
  sumaCatetos = catetoA + catetoB;
  hipotenusa = sqrt(sumaCatetos);

  printf("La hipotenusa es: %f\n",hipotenusa);

return 0;
}


Diario de un programador.- Dia 134

4.- Escriba un programa que pida dos números enteros y que calcule la división, indicando si la división es exacta o no.

#include<iostream>

using std::cout;
using std::cin;
using std::endl;

int main(void){

  int dividendo, divisor;
  cout << "Ingresa el dividendo: ";
  cin >> dividendo;

  cout << "Ingresa el divisor: ";
  cin >> divisor;

  if(dividendo % divisor == 0){
    cout << "La division es exacta" << endl;
    }
  else{
    cout << "La division no es exacta" << endl;
    }

return 0;
}
//Escrito por Gustavo J. Cerda Nilo, Febrero 2016


#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>

using std::cout;
using std::cin;
using std::string;
using std::endl;
using std::getline;


int main(void){

  char palabra1[100], palabra2[100], mayor[100] = "";
  int conteo1, conteo2, diferencia;

  cout << "Ingresa una palabra: ";
  fgets(palabra1,100, stdin);

  cout << "Ingresa otra palabra: ";
  fgets(palabra2,100, stdin);

  conteo1 = strlen(palabra1);
  conteo2 = strlen(palabra2);
  diferencia = abs(conteo1 - conteo2);

  if (conteo1 > conteo2){
      printf("\nLa palabra mayor es %s\n", palabra1);
  }
  if (conteo1 < conteo2){
      printf("\nLa palabra mayor es %s\n", palabra2);
  }
  if(conteo1 == conteo2){
      printf("\nLas palabras tienen la misma longitud\n");
  }

  printf("La diferencia es de %d letra(s)\n", diferencia);

return 0;
}


6.- escriba un programa que ordene cinco números:

#include<iostream>
#include<stdio.h>

using std::cout;
using std::cin;

int main(void){

  int i,j, aux, a[5];
  for(i = 0; i < 5; i++){
    cout << "Ingresa un numero: ";
    cin >> a[i];
  } //fin for

  for(i = 0; i < 5; i++){
    for(j = 0; j < 5; j++){
        if(a[j] > a[j + 1]){
            aux = a[j];
            a[j] = a[j + 1];
            a[j + 1] = aux;
        }//fin if
    }//fin for
  }//fin for
  printf("%d,%d,%d,%d,%d\n", a[0],a[1],a[2],a[3],a[4]);

return 0;
}


Diario de un programador.- Dia 135


7.- Escribir un programa que calcule el mínimo común múltiplo de tres números

#include<iostream>
#include<stdio.h>

using std::cout;
using std::cin;

int main(void){

  int mayor = 0, casilla = 0, numerador = 0, contador = 0;
  int interruptor = 0, multiplicador = 0, multiplo = 0;
  int i, j;
  int num[3];

  cout << "Ingresa 3 numeros: ";
  for (i = 0; i < 3; i++){
    numerador ++;
    printf("%d: ", numerador);
    cin >> num[i];
    if(num[i] > mayor){
      mayor = num[i];
    }//fin if
  }//fin for
  while(interruptor == 0){
    contador = 0;
    multiplicador ++;
    multiplo = mayor * multiplicador;
    for(j = 0; j < 3; j++){
      if(multiplo % num[j] == 0){
        contador++;
      }//fin if
    }//fin for
    if(contador == 3){
      interruptor = 1;
    }//fin if
  }//fin while
  printf("El M.C.M es: %d",multiplo);

return 0;
}


Diario de un programador.- Dia 136

8.- Los tres lados a, b y c de un triángulo deben satisfacer la desigualdad triangular: cada uno de los lados no puede ser más largo que la suma de los otros dos.
Escriba un programa que reciba como entrada los tres lados de un triángulo, e indique si el triángulo es válido y  si lo es, a que tipo corresponde. Ej:
Ingrese lado1: 2
Ingrese lado2: 3
Ingrese lado3: 7
No es un triangulo valido.

Ingrese a: 3
Ingrese b: 2
Ingrese c: 2
El triangulo es isósceles.

#include<iostream>
#include<stdio.h>

using std::cout;
using std::cin;
using std::endl;

 void tipo(int, int, int);
 void tipo(int lado1, int lado2, int lado3){
   if(lado1 == lado2 && lado1 == lado3){
     cout << "Es equilatero" << endl;
   }
   if(lado1 == lado2 && lado1 != lado3 || lado1 == lado3 && lado1 != lado2 || lado2 == lado3 && lado2 != lado1){
     cout << "Es isosceles" << endl;
   }
   if(lado1 != lado2 && lado1 != lado3 && lado2 != lado3){
     cout << "Es escaleno" << endl;
   }
 }

int main(void){

  int desigual = 0, lado1, lado2, lado3;

  cout << "Desigualdad Triangular";
  cout << "Ingresa el lado 1: ";
  cin >> lado1;

  cout << "Ingresa el lado 2: ";
  cin >> lado2;

  cout << "Ingresa el lado 3: ";
  cin >> lado3;

  if((lado1 + lado2) < lado3){
    desigual++;
  }
  if((lado1 + lado3) < lado2){
    desigual++;
  }
  if((lado2 + lado3) < lado1){
    desigual++;
  }
  if (desigual > 0){
    cout << "No es un triangulo valido" << endl;
  }
  else{
    tipo(lado1,lado2,lado3);
  }

return 0;
}



Esto es por hoy. Saludos

Gustavo J. Cerda Nilo
Febrero 2016, Agosto 2016




martes, 2 de agosto de 2016

Capítulo 57. Ejercitando lo aprendido en C. Parte 3

Ultima parte en cuanto a ejercicios en C

19.- Escriba un programa que muestre una tabla de multiplicar como la siguiente:

 1     2    3    4     5    6     7    8    9  10
 2     4    6    8   10  12  14  16  18  20
 3     6    9   12  15  18  21  24  27  30
 4     8  12  16  20   24  28  32  36  40
 5   10  15  20  25   30  35  40  45  50
 6   12  18  24  30   36  42  48  54  60
 7   14  21  28  35   42  49  56  63  70
 8   16  24  32  40   48  56  64  72  80
 9   18  27  36  45   54  63  72  81  90
10  20  30  40  50   60  70  80  90 100

#include<stdio.h>

int main(void){

 int a,b;

 for(a = 1; a <= 10; a++){
    for(b = 1; b <= 10; b++){
      if(a * b < 10){
        printf("%d  ", a * b);
      }
      else{
        printf("%d ", a * b);
      }
      if(b == 10){
        printf("\n");
      }
    }//fin for b
  }//fin for a

return 0;

}


Diario de un programador.- Dia 129

21.- Escriba un programa que entregue  los divisores del número entero ingresado. Ej:
Si el usuario ingresa un 20, el programa responde:
20, 10, 5, 4, 2
Se omite el 1 ya que todos los número son divisibles por 1 y a pesar de que todos los números son divisibles por sí mismo, debe ser agregado de igual forma.

#include<stdio.h>

int main(void){
   int num, i, divisor = 0, iterar = 0, aux = 0;

   printf("DIVISORES\n");
   printf("Ingresa un numero: ");
   scanf("%d", &num);

   if(num % 2 == 0){
     iterar = num / 2;
   }
   else{
     iterar = (num - 1) / 2;
   }
   for(i = 1; i <= iterar; i++){
     if(num % i == 0){
       aux = num / i;
       if(aux != divisor){
         divisor = aux;
       }
       if(i == iterar){
         printf("%d", divisor);
       }
       else{
         printf("%d,",divisor);
       }
      }
    }//fin for

return 0;
}


22 Escriba un programa que pida al usuario ingresar la altura y el ancho de un rectángulo y lo dibuje utilizando asteriscos:
Alto: 3
Ancho: 4

****
****
****
#include<stdio.h>

int main(void){

  int alto, ancho, a, b;

  printf("Rectangulo de asteriscos\n\n");
  printf("Alto: ");
  scanf("%d",&alto);

  printf("Ancho: ");
  scanf("%d",&ancho);

  for(a = 1; a <= alto; a++){
    for(b = 1; b <= ancho; b++){
      printf("*");
    }
      printf("\n");
  }
return 0;
}


Diario de un programador.- Dia 130

23 Escriba un programa que dibuje el triángulo del tamaño indicado por el usuario de acuerdo al ejemplo:
Altura: 5

*
**
***
****
*****
#include<stdio.h>

int main(void){

  int alto, x, g;

  printf("Triangulo de asteriscos\n\n");
  printf("Alto: ");
  scanf("%d",&alto);

  for(x = 1; x <= alto; x++){
    for(g = 1; g <= alto; g++){
      if(g <= x){
        printf("*");
      }
    }//fin for g
    printf("\n");
  }//fin for x

return 0;
}


24.- Escriba un programa que determine la cantidad de dígitos en un número natural ingresado por el usuario:
Ingrese numero: 12345
12345 tiene 5 digitos

//transformando el numero a cadena y luego
//contarlo con strlen
#include<stdio.h>
#include<string.h>

int main(void){

  int num, contar;
  char cadena[100];

  printf("Ingresa un numero: ");
  scanf("%d",&num);
  itoa(num, cadena,10);
  contar = strlen(cadena);

  printf("Tiene %d digitos\n", contar);
//  printf("%s\n",cadena);

return 0;
}



Con esto doy por terminado la introducción a la programación en C. Aún hay mucho más que aprender ya que esto es solo la punta del iceberg en C.


Gustavo J. Cerda Nilo
Febrero 2016, Agosto 2016




C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...