Recuperatorio del Tercer Parcial Resuelto

Anuncio
INFORMATICA I -TERCER PARCIAL RECUPERATORIO
Grupo 1
Tema 1
Hacer un procedimiento en lenguaje C al que se le pasan dos variables de tipo double y un número entero. Si el número
entero es distinto de cero, el mayor de los valores se devuelve en la primera variable, si el número entero es igual a cero se
devuelve el menor en la primer variable.
Hacer un programa en C al que se le ingresan tres valores reales a las respectivas variables y luego mediante el llamado al
procedimiento se los muestra de menor a mayor.
Solución
//--------------------------------------------------------------------------#pragma hdrstop
//--------------------------------------------------------------------------#include <stdio.h>
#include <stdlib.h>
#pragma argsused
void cp( double* pa, double * pb, int n )
{
double x;
if( n > 0 )
{
if( (* pa) > (* pb) )
{
x=*pa;
*pa = *pb;
*pb = x;
}
}
else if( *pa < *pb )
{
x=*pa;
*pa = *pb;
*pb = x;
}
}
main()
{
double a, b, c;
printf("entre a "); scanf("%lf", &a );
printf("entre b "); scanf("%lf", &b );
printf("entre c "); scanf("%lf", &c );
cp(&a, &b, 1);
cp(&a, &c, 1);
cp(&b, &c, 1);
printf("%lf %lf %lf\n", a, b, c );
getchar();
getchar();
}
//---------------------------------------------------------------------------
Tema 2
Construir una función llamada sumapares a la que se le pasa como parámetro un número entero positivo y devuelve un
valor double que representa la suma de todos los números pares menores que dicho número inclusive él mismo. Por
ejemplo si se le pasa el número 12 a la función sumapares esta devolverá 42 o sea el resultado de 12+10+8+6+4+2.
Se pide hacer un programa en lenguaje C al que se le ingresan números aleatorios enteros entre 20 y 50 a un vector de 20
números enteros y se llena otro vector de del mismo tamaño pero de números reales con el resultado del llamado a la
función sumapares. Finalmente se deberán mostrar ambos vectores.
Solución
//--------------------------------------------------------------------------#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
#include <stdio.h>
#include <stdlib.h>
#define CANT 20
double sumapares( int n )
{
double suma=0;
while( n > 0 )
{
if( n%2 == 0 )
{
suma+=n;
}
n--;
}
return suma;
}
main()
{
int a[CANT], i;
double b[CANT];
randomize();
for( i = 0; i < CANT; i++ )
{
a[i] = random(51)+20;
b[i] = sumapares(a[i]);
printf( "%d\t%lf\n", a[i], b[i] );
}
getchar();
}
//---------------------------------------------------------------------------
Tema 3
Construir una unión llamada nrosreales en la que se pueda almacenar cualquiera de los dos tipos reales.
Hacer un programa en lenguaje C en el que se declare la unión y se usen tres instancias de la misma. En la primera se guarda
un valor de tipo float en la segunda uno de tipo double y en la tercera como double el resultado del producto de las dos
primeras.
Solución
//--------------------------------------------------------------------------#pragma hdrstop
//--------------------------------------------------------------------------#include <stdio.h>
#pragma argsused
union nrosreales
{
double d;
float f;
};
main()
{
union nrosreales a, b, c;
printf ("entre a "); scanf( "%f", &a.f );
printf ("entre b "); scanf( "%lf", &b.d );
getchar();
c.d = a.f * b.d;
printf("%lf\n", c.d );
getchar();
}
//---------------------------------------------------------------------------
----------------------------------------------------------
INFORMATICA I -TERCER PARCIAL RECUPERATORIO
Grupo 2
Tema 1
Construir un procedimiento en lenguaje C tal que muestre n términos de un vector de números enteros.
Construir un programa en lenguaje C donde se ingresan números aleatorios a un vector de 20 términos y se van mostrando
todos los números a medida que se vayan ingresando mediante llamadas sucesivas al procedimiento construido.
Solución
//--------------------------------------------------------------------------#pragma hdrstop
//--------------------------------------------------------------------------#include <stdio.h>
#include <stdlib.h>
#define CANT
20
#pragma argsused
void mostrar( int * a, int n )
{
int i;
for( i = 0; i < n; i++ )
{
printf("%d\t", a[i] );
}
printf("\n" );
}
main()
{
int a[CANT], i;
for( i = 0; i < CANT; i++ )
{
a[i] = random(500);
mostrar(a, i);
}
getchar();
}
//---------------------------------------------------------------------------
Tema 2
Hacer una función en lenguaje C a la que se le pasan dos valores de tipo double. Esta devuelve 1 si el primer valor es mayor
que el segundo, cero si son iguales y -1 si el segundo es mayor que el primero.
Hacer un programa en C al que se le ingresan tres valores reales a sus respectivas variables y luego se los muestra de mayor
a menor llamando a la función creada.
Solución
//--------------------------------------------------------------------------#pragma hdrstop
#include <stdio.h>
#include <stdlib.h>
//--------------------------------------------------------------------------#pragma argsused
int probar( double a, double b)
{
if( a > b )
{
return 1;
}
else if ( a < b )
{
return -1;
}
return 0;
}
main()
{
double a, b, c, aux;
printf( "entre a "); scanf( "%lf", &a);
printf( "entre b "); scanf( "%lf", &b);
printf( "entre c "); scanf( "%lf", &c);
getchar();
if( probar(a,b) < 0 )
{
aux = a;
a = b;
b = aux;
}
if( probar(a, c) < 0 )
{
aux = a;
a = c;
c = aux;
}
if( probar(b, c) < 0 )
{
aux = b;
b = c;
c = aux;
}
printf( "%lf %lf %lf\n", a, b, c );
getchar();
}
//---------------------------------------------------------------------------
Tema 3
Hacer un programa en C que declare una unión consistente en dos vectores uno entero de 20 elementos y otro real de 20
elementos.
Declarar tres instancias de la unión, llenar en la primera el vector de números enteros, en la otra el vector de números
reales y la tercera el vector real con el producto de las otras dos. Mostrarlos.
Solución
//--------------------------------------------------------------------------pragma hdrstop
//--------------------------------------------------------------------------#include <stdio.h>
#include <stdlib.h>
union vect20
{
int a[20];
double d[20];
};
#pragma argsused
main()
{
union vect20 v, w, x;
int i;
for( i = 0; i < 20; i++ )
{
v.a[i] = random(100);
w.d[i] = random(100);
x.d[i] = v.a[i]* w.d[i];
printf( "%d\t%lf\t%lf\n", v.a[i], w.d[i], x.d[i] );
}
getchar();
}
//---------------------------------------------------------------------------
Descargar