martes, 2 de diciembre de 2014

Tareas Autónoma 02/12/2014

Ejercicios propuestos.

1) Escribir un programa que pida 10 números enteros por teclado y que imprima por pantalla:
I. Cuántos de esos números son pares.
II.Cuál es el valor del número máximo.
III.Cuál es el valor del número mínimo.

namespace Ejercicio1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.White;
            Console.BackgroundColor = ConsoleColor.Blue;
            Console.Clear();
            int[] arreglo = new int[10]; 
            int i=0,conteo=0,esclavo=0,mayor=0,menor=0;
               Console.WriteLine("\t \t*** Cantidad de números pares, mayor y menor *** \n");

             for (i=0; i<10; i++)

             {
                 Console.Write("\tIntroduzca el " + (i + 1) + " valor: ");
                arreglo[i] = int.Parse(Console.ReadLine());
              }
            for (i=0; i<10; i++)
            {
                if (arreglo[i] % 2 == 0)
                {
                    conteo=conteo + 1;
                }
            }
            for (i=0; i<10; i++)
            {
                if (arreglo[i] > mayor)
                {
                    mayor = arreglo[i];
                    esclavo = arreglo[i];
                }
            }
            for (i=0; i<10; i++)
            {
                if (arreglo[i] <= esclavo)    
                {
                    menor = arreglo[i];
                    esclavo = arreglo[i];
                }
               }
        Console.ForegroundColor = ConsoleColor.Yellow;
        Console.WriteLine("\n\t**** Resultados ****");
        Console.WriteLine("\tNúmero de pares : " + conteo);
        Console.WriteLine("\tNúmero mayor    : " + mayor);
        Console.WriteLine("\tNúmero menor    : " + menor);
        Console.ReadKey();
        }
    }
}



2) Escribir un programa que lea un vector de 10 elementos. Deberá imprimir el mismo vector por pantalla pero invertido. Ejemplo: dado el vector 1 2 3 4 5 6 7 8 9 10 el programa debería imprimir 10 9 8 7 6 5 4 3 2 1.

namespace Ejercicio2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.White;
            Console.BackgroundColor = ConsoleColor.Blue;
            Console.Clear();
            int[] arreglo = new int[10];
            int i = 0;

            Console.WriteLine("\t \t*** Números invertidos*** \n");
            for (i = 0; i < 10; i++)
            {
                Console.Write("\tIngrese el " + (i+1) + " número: ");
                arreglo[i] = int.Parse(Console.ReadLine());
            }
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write("\n\tOrden original   : ");
            for (i = 0; i < 10; i++)
            {
                Console.Write(arreglo[i] + ",");
            }
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write("\n\tOrden invertido  : ");
            for (i = 9; i >= 0; i--)
            {
                Console.Write(arreglo[i] + ",");

            }
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.ReadKey();
        }
    }
}


3) Escribir un programa que lea 10 números por teclado. Luego lea dos más e indique si éstos están entre los anteriores.

namespace ejercicio3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.White;
            Console.BackgroundColor = ConsoleColor.Blue;
            Console.Clear();
            int[] arreglo = new int[10];
            int i=0,contav1=0,contav2=0;
            Console.WriteLine("\t \t*** Comparación de números *** \n");
            for (i=0; i<10; i++)
            {
                Console.Write("\tIngrese el " + (i+1) + " número: ");
                arreglo[i] = int.Parse(Console.ReadLine());
            }
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("\n\n\t \t*** Ingrese dos valores para comparar ****");
            Console.Write("\tIngrese el 1 valor: ");
            int valor1 = int.Parse(Console.ReadLine());
            Console.Write("\tIngrese el 2 valor: ");
            int valor2 = int.Parse(Console.ReadLine());

            for ( i=0; i<10; i++)
            {
                if (arreglo[i]==valor1)
                {
                    contav1++;
                }
                else if(arreglo[i]==valor2)
                {
                    contav2++;
                }
            }
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write("\n\tEl número "+ valor1 + " se repite " + contav1 + " veces.");
            Console.Write("\n\tEl número " + valor2 + " se repite " + contav2 + " veces.");
            Console.ReadKey();
            }
        }
    }



4) Escribir un programa que lea una matriz de números enteros y que devuelva la suma de los elementos positivos de la matriz y la suma de los elementos negativos. 

namespace Ejercicio4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.White;
            Console.BackgroundColor = ConsoleColor.Blue;
            Console.Clear();
            int[,] matriz = new int[10,10]; 
            int i=0,c=0,negativos=0,positivos=0;
            Console.WriteLine("\t \t*** Matriz de números positivos y negativos ");
            Console.Write("\n\t Ingrese los valores de la matriz: ");
            for (i = 1; i <= matriz.GetLength(0); i++)
            {
                for (c = 1; c <= matriz.GetLength(1); c++)
                {
                    matriz[i,c] = int.Parse(Console.ReadLine()); ;
                }
            }
            for (i = 1; i <= matriz.GetLength(1); i++)
            {
                for (c = 1; c <= matriz.GetLength(0); c++)
                {
                    if (matriz[i,c] > 0)
                    {
                        positivos = positivos + matriz[i,c];
                    }
                    else
                    {
                        negativos = negativos + matriz[i,c];  
                    }
                }
            }
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("\n\tSuma de los numeros positivos: " + positivos);
            Console.WriteLine("\tSuma de los numeros negativos: " + negativos);
            Console.ReadKey();
        }
    }
}

Realizar un mentefacto de cadenas:


Valores de cadenas constantes

Recordando la presentación de arreglos hecha, en donde las cadenas están definidas como un arreglo de caracteres o un apuntador a una porción de memoria conteniendo caracteres ASCII. Una cadena en C es una secuencia de cero o más caracteres seguidas por un caracter NULL o \0:
Es importante preservar el caracter de terminación NULL, ya que con éste es como C define y maneja las longitudes de las cadenas. Todas las funciones de la biblioteca estándar de C lo requieren para una operación satisfactoria.
En general, aparte de algunas funciones restringidas en longitud (strncat(), strncmp() y strncpy()), al menos que se creen cadenas a mano, no se deberán encontrar problemas. Se deberán usar las funciones para manejo de cadenas y no tratar de manipular las cadenas en forma manual desmantelando y ensamblando cadenas.
Funciones necesarias para el manejo de cadenas adecuadas para  el desarrollo de la aplicación informática.

Las funciones más comunes son descritas a continuación:

• char *strcpy(const char *dest, const char *orig) -- Copia la cadena de caracteres apuntada por origen (incluyendo el carácter terminador '\0') al vector apuntado por dest. Las cadenas no deben solaparse, y la de destino, debe ser suficientemente grande como para alojar la copia.
• int strcmp(const char *s1, const char *s2) -- Compara las dos cadenas de caracteres s1 y s2. Devuelve un entero menor, igual o mayor que cero si se encuentra que s1 es, respectivamente, menor que, igual a, o mayor que s2.
• char *strerror(int errnum) -- Devuelve un mensaje de error que corresponde a un número de error.
• int strlen(const char *s) -- Calcula la longitud de la cadena de caracteres.
• char *strncat(char *s1, const char *s2, size_t n) -- Agrega n caracteres de s2 a s1.
• int strncmp(const char *s1, char *s2, size_t n) -- Compara los primeros n caracteres de dos cadenas.
• char *strncpy(const char *s1, const char *s2, size_t n) -- Copia los primeros n caracteres de s2 a s1.
• strcasecmp(const char *s1, const char *s2) -- versión que ignora si son mayúsculas o minúsculas de strcmp().
• strncasecmp(const char *s1, const char *s2, size_t n) -- versión insensible a mayúsculas o minúsculas de strncmp() que compara los primeros n caracteres de s1.

Fuentes:
Harvey M. Deitel y Paul J. Deitel , Cómo programar en C#, 2da Edición