Tag: UP


Recursividad: Sumatoria Recursiva de un array en C

Posted on Miércoles, mayo 5th, 2010 at 13:07

Para hacer una función recursiva en c. solo tenemos que llamarla dentro de si misma. Hay que tener en cuenta que aparte de la llamada a si misma tiene que en algún momento cortar la recursividad para no generar un loop.

En este caso la condición de salida es que cuando el numero de elementos llega a 0. Se deja de llamar a la función y se devuelve 0. En este momento, se hacen todas las sumas de los elementos y se le entrega a la variable “sumatoria” del main, el resultado de la suma.

En el siguiente código de ejemplo, se carga un vector con n elementos enteros y calcular la suma de sus elementos en forma recursiva

#include <stdio.h>
#include <conio.h>
#include <string.h>
 
// CONSTANTES
#define TAM_ARR_MAX 20
 
int main(int argc, char **argv)
{
	//DECLARACION DE  VARIABLES
	int VEC1[TAM_ARR_MAX], VEC2[TAM_ARR_MAX];
	int tam_1;
	int sumatoria;
 
	printf("#### 1 #####\n");
	tam_1 = ask_tam(); //Le pregunta al usuario que tamaño tendra el vector.
	arr_cargar(VEC1,tam_1); //El usuario Carga el vector.
	arr_mostrar(VEC1,tam_1); //Se muestra el vector Cargado
    sumatoria = rec_arr_sumatoria(VEC1,tam_1); // SUMATORIA DEL VECTOR EN FORMA RECURSIVA
	printf("\nLa sumatoria de los %d elementos del array es: %d",tam_1,sumatoria);
	printf("\n\n****************************\n");
 
    //Cierro main.
	//getch();
	return 0;
}	
 
 
 
/************************************/
/*            FUNCIONES             */
/************************************/
 
 
int ask_tam(){
	int n;
	printf("\nIngrese el tamanio que tendra el array (menor que %d):",TAM_ARR_MAX);
	do{
		scanf("%d",&n);
	}while(n<1);
	return n;
}
 
void arr_mostrar(int X[TAM_ARR_MAX], int n){
	int i;
	printf("\n");
	for(i=0;i<n;i++){
		printf("[%d]:%d",i,X[i]);
		if(i<n)
			printf("; ");
	}
	printf("\n");
}
void arr_cargar(int X[TAM_ARR_MAX], int n){
	int i;
	for(i=0;i<n;i++){
		printf("\nIngrese [%d]:",i);
		scanf("%d",&X[i]);
	}
}
int rec_arr_sumatoria(int X[], int i){
	if(i==0)
		return 0;
	else	
		return rec_arr_sumatoria(X,i-1)+X[i-1];
}

Manejo de Caracteres en C

Posted on Sábado, abril 3rd, 2010 at 11:29

TP2 para UP. Estructuras de datos y Algoritmos
Dejo ejemplificado el manejo de caracteres en C. Con un Trabajo Practico que tube que entregar en la facultad. Con los siguientes puntos:

1. Leer un texto carácter por carácter terminando en EOF. Contar cuántas veces aparecen dos letras iguales. Mostrarlas intercalándoles el signo “=”.
Ejemplo: “sooolo see que no see naaddaaa.”
En 8 oportunidades hay dos letras iguales juntas. “so=o=olo se=e que no se=e na=ad=da=a=a”

2. Ingrese un texto carácter a carácter terminado en EOF contar cuantas palabras tienen más de una vez repetida la primer letra de la primer palabra.
Ejemplo:
AYER ESTABA FEO PERO ANA FUE IGUALMENTE AL ALMACEN.
La cantidad de palabras que tienen más de una A es 3.

3. Leer un texto carácter por carácter terminando en EOF. Contar palabras de 5 letras que terminan en “ia”. Al final de cada una de esas palabras, insertar el número “5”.
Ejemplo: “María sabia que no le salía” => ”Maria5 sabia5 que no le salia5”
La cantidad de palabras terminadas en ia son: 3

Uso de putchar(); y getchar();

Todavía hay más por leer »

Manejo de Matrices en C

Posted on Viernes, abril 2nd, 2010 at 19:45

TP1 para UP.
Les dejo ejemplificado con estos ejercicios el manejo de matrices en C..

Cargar una matriz de 5 filas y 5 columnas y calcular y mostrar:
1. la matriz transpuesta
2. El promedio de los elementos de las dos diagonales (principal y secundaria)
3. Multiplicar la matriz por su transpuesta.
4. Determinar cuantos números primos hay en la matriz.

Funciones en el código:
- Cargar matriz cuadrada
- Mostrar matriz cuadrada
- Calcular matriz transpuesta
- Multiplicar matrices
- Sacar el promedio de las diagonales
- Contar la cantidad de primos en la matriz

Todavía hay más por leer »