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();
}
}
}
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