Académique Documents
Professionnel Documents
Culture Documents
CARRERA DE:
DEBER 1_1_3654
EJERCICIOS DE JNI
FECHA: 2019-10-27
QUITO - ECUADOR
CONTENIDO
CONTENIDO................................................................................................................................................... 2
1. Ejercicio 1. ............................................................................................................................................... 3
1. Enunciado del Problema ...................................................................................................................... 3
2. Código del Programa ........................................................................................................................... 3
3. Prueba de Escritorio ............................................................................................................................ 4
4. Análisis de resultados .......................................................................................................................... 4
2. Ejercicio 2. ............................................................................................................................................... 5
1. Enunciado del Problema ...................................................................................................................... 5
2. Código del Programa ........................................................................................................................... 5
3. Prueba de Escritorio ............................................................................................................................ 6
4. Análisis de resultados .......................................................................................................................... 6
3. Ejercicio 3. ............................................................................................................................................... 7
1. Enunciado del Problema ...................................................................................................................... 7
2. Código del Programa ........................................................................................................................... 7
3. Prueba de Escritorio ............................................................................................................................ 9
4. Análisis de resultados ........................................................................................................................ 10
4. Ejercicio 4. ............................................................................................................................................. 11
1. Enunciado del Problema .................................................................................................................... 11
2. Código del Programa ......................................................................................................................... 11
3. Prueba de Escritorio .......................................................................................................................... 13
4. Análisis de resultados ........................................................................................................................ 14
5. Ejercicio 5. ............................................................................................................................................. 15
1. Enunciado del Problema .................................................................................................................... 15
2. Código del Programa ......................................................................................................................... 15
3. Prueba de Escritorio .......................................................................................................................... 17
4. Análisis de resultados ........................................................................................................................ 17
1. Ejercicio 1.
}
}
static {
System.loadLibrary( "Abecedario" );
}
}
// Abecedario.c
#include <jni.h>
#include <string.h>
#include <stdio.h>
#include "Abecedario.h"
JNIEXPORT jstring JNICALL
Java_Abecedario_pideTexto (JNIEnv *env, jobject obj, jstring prompt)
{
char buffer[128];
int j=0;
const jbyte* prompt_c = (*env)->GetStringUTFChars( env, prompt, NULL );
printf( "Texto Ingresado: ");
puts(prompt_c);
for(int i=0;i<strlen(prompt_c);i++){
int cad=0;
cad=prompt_c[i]-65;
if((cad>-1 && cad<26) || (cad>31 && cad<58) ){
buffer[j]=prompt_c[i];
j++;
}
}
3. Prueba de Escritorio
4. Análisis de resultados
El programa nos indica la frecuencia relativa de cada letra, comprueba la primera letra de la
palabra ingresada y la compara, al ser iguales es contada y enviada por medio de mensaje
a la pantalla y asi sucesivamente para cada letra.
2. Ejercicio 2.
for(int i=0;i<num;i++){
System.out.println("Digite la frase "+(i+1)+" :");
f[i]=leer.nextLine();
}
for(int i=0;i<num;i++){
System.out.print("Frase: "+f[i]+ " -> ");
if(p.pideTexto(f[i])==false)
System.out.println("No es una cadena palindromo");
else
System.out.println("Si es una cadena palindromo");
}
}
static {
System.loadLibrary( "Palindromo" );
}
}
//Palindromo.c
#include <jni.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdbool.h>
#include "Palindromo.h"
JNIEXPORT jboolean JNICALL
Java_Palindromo_pideTexto (JNIEnv *env, jobject obj, jstring prompt)
{
const jbyte* TEXTO = (*env)->GetStringUTFChars( env, prompt, NULL );
char palabra[128]="",palabran[128]="";
int j=0;
bool pal=false;
for(int i=0;i<strlen(TEXTO);i++){
if(TEXTO[i]>=97 && TEXTO[i]<=122){
palabra[j]=TEXTO[i];
j++;
}
if((TEXTO[i]>=65 && TEXTO[i]<=90)){
palabra[j]=TEXTO[i]+32;
j++;
}
}
int longi=strlen(palabra);
if(strcmp(palabra,palabran)==0)
return true;
else
return false;
3. Prueba de Escritorio
4. Análisis de resultados
En este programa podemos entender el concepto de palabra palíndromo es muy importante
especificar la definición al momento de programar se da una comparación para saber si es
palíndromo.
3. Ejercicio 3.
El programa java debe tener un método nativo con un arreglo de las ventas de los
vendedores como parámetro, este método retorna un arreglo con los el número de
vendedores que ganaron salarios en cada uno de los rangos indicados
anteriormente.
while(cant<=0){
System.out.println("Reingrese: ");
cant=reader.nextInt();
}
int[] A = new int [cant];
int[] B = new int [cant];
while(A[i]<=0){
System.out.println("Reingrese: ");
A[i]=reader.nextInt();
}
System.out.print("Ganancias en dolares:");
B[i]=reader.nextInt();
while(B[i]<=0){
System.out.println("Reingrese: ");
B[i]=reader.nextInt();
}}
int c1=0,c2=0,c3=0,c4=0,c5=0,c6=0,c7=0,c8=0,c9=0;
static {
System.loadLibrary( "Salarios" );
}
}
// Salarios.c
#include <jni.h>
#include "Salarios.h"
return arregloC;
}
3. Prueba de Escritorio
4. Análisis de resultados
En este programa se ingresa un número n de empleados, se requiere de cuantas semanas
esta y cuantas ganancias de ventas tuvo. Así se realiza el estimado de cuando esta ganando
y lo mostramos en una tabla.
4. Ejercicio 4.
for(int i=0;i<cuan;i++){
System.out.println("Ingrese el elemento "+(i+1)+" :");
list[i]=leer.nextFloat();
}
int men=0;
do{
System.out.println("");
System.out.println("--------MENU DE ORDENACION------");
System.out.println("Como desea Ordenar el arreglo?");
System.out.println("1. Menor a mayor en magnitud");
System.out.println("2. Menor a mayor algebraicamente (por signo)");
System.out.println("3. Mayor a menor en magnitud");
System.out.println("4. Mayor a menor algebraicamente (por signo)");
System.out.println("5. Salir");
men=leer.nextInt();
if(men<=4 && men>=1){
System.out.println("Vector Original");
for(int i=0;i<cuan;i++)
System.out.print(list[i]+ ", ");
System.out.println("");
switch(men){
case 1:
System.out.println("El arreglo de menor a mayor en magnitud");
ubi=p.mM(list);
break;
case 2:
System.out.println("El arreglo de menor a mayor algebraicamente (por
signo)");
ubi=p.mMs(list);
break;
case 3:
System.out.println("El arreglo de mayor a menor en magnitud");
ubi=p.Mm(list);
break;
case 4:
System.out.println("El arreglo de mayor a menor algebraicamente (por
signo)");
ubi=p.Mms(list);
break;
}
for(int i=0;i<cuan;i++)
System.out.print(ubi[i]+ ", ");
}
else if(men==5)
System.out.print("Fin del Programa");
else
System.out.print("menion incorrecta, porfavor ingrese un cuanero del 1 al 5");
}while(men!=5);
}
static {
System.loadLibrary( "Ordenar" );
}
}
// Ordenar.c
#include <jni.h>
#include <stdio.h>
#include <math.h>
#include "Ordenar.h"
JNIEXPORT jfloatArray JNICALL
Java_Ordenar_Mms(JNIEnv *env, jobject obj, jfloatArray arreglo)
{
jfloat* arre;
arre= (*env)->GetFloatArrayElements (env, arreglo, NULL);
jsize numero = (*env)->GetArrayLength( env, arreglo );
float aux;
for(int i=0;i<numero;i++){
for(int j=i+1;j<numero;j++){
if(arre[i]<arre[j]){
aux=arre[i];
arre[i]=arre[j];
arre[j]=aux;
}
}
}
return arreglo;
return arreglo;
return arreglo;
for(int i=0;i<numero;i++){
for(int j=i+1;j<numero;j++){
if(fabs(arre[i])>fabs(arre[j])){
aux=arre[i];
arre[i]=arre[j];
arre[j]=aux;
}
}
}
return arreglo;
3. Prueba de Escritorio
4. Análisis de resultados
Este programa ordena de Menor a mayor en magnitud, Menor a mayor algebraicamente (por signo),
Mayor a menor en magnitud, Mayor a menor algebraicamente (por signo); se puede observar que los
vectores son ordenados de menor a mayor y depende de la opción que escojamos.
5. Ejercicio 5.
Almacenar los nombres de los estudiantes en un arreglo de caracteres y las notas en un arreglo
bidimensional de punto flotante. Hacer el programa lo más general posible. A continuación en métodos
nativos calcular la media para cada estudiante, la media de la clase, y la desviación de la media de cada
estudiante respecto de la media general. Luego imprimir la ponderación de cada examen y etiquetar
claramente la salida como se muestra en el siguiente ejemplo:
for(int i=0;i<cuan2;i++){
System.out.print("Ingrese el nombre del alumno "+(i+1)+": ");
alum[i]=leer.next();
}
String[] n,aut;
for(int i=0;i<cuan2;i++){
for(int j=0;j<cuan;j++){
System.out.print("Ingrese la nota "+ (j+1)+ " de " +alum[i]+": ");
lista[i][j]=leer.nextInt();
}
}
for(int i=0;i<cuan;i++){
System.out.print("Ingrese el peso en porcentaje de la nota "+(i+1)+": ");
autsos[i]=leer.nextFloat();
}
media=p.getmedia(lista, autsos);
float media_clase=p.getmediaClase(media);
medias=p.getmedia(media, media_clase);
System.out.println("Nombre Notasprogra de examenes(Porcentajes) Promedio
Desviacion");
for(int i=0;i<cuan2;i++){
System.out.print(alum[i]+" \t");
for(int j=0;j<cuan;j++)
System.out.print(lista[i][j]+"\t");
System.out.print(media[i]+"\t");
System.out.print(medias[i]+"\t");
System.out.println("");
}
System.out.println("Media de la clase: "+media_clase);
}
static {
System.loadLibrary( "Notasprogra" );
}
}
// Notasprogra.c
#include <jni.h>
#include "Notasprogra.h"
# include <stdio.h>
3. Prueba de Escritorio
4. Análisis de resultados
En este programa ingresamos notas para sacar promedios de estudiantes, es un uso que se
implementa para calcular notas de los alumnos, es muy importante saber como podemos
ingresar y guardar en cada vector y hacer los cálculos respectivos