|
Mostrar Mensajes
|
Páginas: [1] 2
|
1
|
Programación / Programación C/C++ / Algoritmo de numeros compuestos
|
en: 14 Noviembre 2023, 23:31 pm
|
Hola de nyevo: Estoy intentando codificar en C este algoritmo: algoritmo BuscaDivisoresMultiplicadosIgualesNumero var num, divisor1, divisor2, divisor3: entero; fvar
num := leerEntero( );
mientras (num ≠ -1) hacer buscadivisor1(num, divisor1, divisor2,divisor3);
si loEs(num, divisor1, divisor2,divisor3) entonces printaExito(num, divisor1, divisor2,divisor3
sino printaFracaso(num);
fsi
num := leerEntero( );
fmientras
falgoritmo
accion printaExito( ent a: entero, ent b: entero, ent c: entero, ent d: entero )
escribirCadena(‘El número: ‘); escribirEntero(a);
escribirCadena(‘ es igual a ‘);
escribirEntero(b);
escribirCadena(‘ multiplicado por ‘);
escribirEntero(c);
escribirCadena(‘ y por ‘);
escribirEntero(d);
fsi
faccion
accion printaFracaso(ent a: entero) escribirCadena(‘El número: ‘); escribirEntero(a); escribirCadena(‘ no tiene divisores diferentes de 1 que multiplicados sean igual a el. ‘); faccion
funcion loEs(ent x: entero,ent y:entero,ent z: entero, ent w: entero): booleano;
retorna x = (y * z * w); ffuncion
accion buscadivisor1(ent n: entero, sal d1: entero, sal d2: entero, sal d3: entero ) var
encontrado: booleano; fvar
encontrado:=falso;
d1:=2;
d2:=2;
d3:=2;
mientras d1<=(n div 2) y no encontrado hacer buscadivisor2 (n,d1,d2,d3); encontrado:= loEs (n,d1,d2,d3);
si no encontrado entonces
d1:=d1+1;
fsi fmientras faccion
accion buscadivisor2( ent num: entero, ent d1: entero, sal d2: entero, sal d3: entero )
var
encontrado: booleano; fvar
encontrado:=falso;
d2:=2;
d3:=2;
mientras d2 <= (num div 2) y no encontrado hacer buscadivisor3(num,d1,d2,d3);
encontrado:= loEs (num,d1,d2,d3); si no encontrado entonces d2:=d2+1; fsi fmientras faccion
accion buscadivisor3( ent num: entero, ent d1: entero, sal d2: entero, sal d3: entero )
var
encontrado: booleano; fvar
encontrado:=falso;
d3:=2;
mientras d3 <= (num div 2) y no encontrado hacer
encontrado:= loEs (num,d1,d2,d3); si no encontrado entonces d3:=d3+1; fsi fmientras faccion Tengo la teoria de que en la prkmera oarte hay que yacer un bucle while que busque divisores, lo de printar las cadenas eso lo tengo solucionado, pero lo qye desconozco es como codificar el resto, el resultado, deberia dar un programa el cual te muestra 3 numeros que multiplicados entre si dan el numero introducido ¿Alguien puede ayudarme a codificar el algoritmo?
|
|
|
2
|
Programación / Programación C/C++ / Re: Contador
|
en: 14 Noviembre 2023, 20:55 pm
|
Hola gracuas por responder, esa parte la solucione, ahora lo que tengo es problemas de entender oarametro de entrada y salida es una funcion
|
|
|
3
|
Programación / Programación C/C++ / Contador
|
en: 7 Noviembre 2023, 18:02 pm
|
Hola Alguien sabe el porque el contador no se incrementa? printf("es tu turno jugador, se ha generado tu array y ahora vas a llenarlo \n"); printf("recuerda que has de usar numeros del 1 al 4\n"); do { printf("Introduce el entero del 1 al 4 numero %d: ",contador); scanf("%d",&numero); if((numero>=1)&&(numero<=4)) { printf("Introduce el entero del 1 al 4 numero %d: ",contador); printf("\n"); jugador[numeros]; scanf("%d",&jugador[0]); scanf("%d",&jugador[1]); scanf("%d",&jugador[2]); scanf("%d",&jugador[3]); scanf("%d",&jugador[4]); scanf("%d",&jugador[5]); scanf("%d",&jugador[6]); scanf("%d",&jugador[7]); scanf("%d",&jugador[8]); scanf("%d",&jugador[9]); } else { printf("\n"); printf("B"); printf("\n"); } contador +=1; |
|
|
|
4
|
Programación / Programación C/C++ / Re: Funcion que muestre aciertos y porcentaje
|
en: 4 Noviembre 2023, 23:55 pm
|
Codificar una aplicación en C que inicialmente generará una cantidad aleatoria de números no inferior a 5 ni superior a 10. Los números generados aleatoriamente podrán ser únicamente el 1, 2, 3 o el 4 y se almacenarán en un array. Una vez guardados la aplicación indicará cuantos se han generado. En la captura como ves, se ve que se han generado y guardado 6 números enteros, que recordamos únicamente pueden ser valores enteros comprendidos entre el 1 y el 4:
31 Seguidamente empieza el turno del jugador. Se pedirá ahora al usuario la introducción de tantos números enteros comprendidos entre el 1 y el 4, como se hayan generado en el paso anterior:
32 Fíjate que se va indicando que número se está introduciendo, el primero, segundo… y que, por otro lado tal como se aprecia en la siguiente captura, en la cuarta introducción, en la que se introduce dos veces un número no comprendido entre el 1 y el 4, la aplicación pide por tanto la introducción de éste, hasta que se cumpla con lo especificado:
33 Una vez introducidos correctamente por el usuario todos los números, la aplicación indica cuantos se han acertado respecto a los generados aleatoriamente, y el porcentaje de acierto que se ha tenido:
34 En el siguiente paso se indica cuales, y en que posición se encuentran, los que se hayan acertado, y lo mismo seguidamente para los que se hayan fallado:
35
Finalmente se hace un resumen impreso de todas las posiciones de los dos arrays indicando, tanto lo generado, como lo introducido, como si lo introducido ha sido acertado o no:
36
Este es el codigo como lo tengo, lo que desconozco son los errores logicos que no lo hacen funcionar:
#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<time.h> #include<stdbool.h>
int numerosueuario () {
int num3; printf("Introruce %d numeros del 1 y al 4: ",num3); scanf("%d",&num3); }
int rango_numero () {
int num, num3, f; int contador =0; int min = 1; int max = 4;
while (contador <=10) {
int i = 1; int *arrayjugador; arrayjugador = (int *)malloc(i*sizeof(int)); free (arrayjugador); bool rango;
printf("introduce un numero del 1 al 4: "); scanf("%d",&num3);
if((num3 >= min)&&(num3<=max)) {
rango = true;
if (rango == true) {
for(f=0; f<=10; f++) { scanf("%d",&arrayjugador[f]); } }
contador+=1;
} else { printf("Introduce un numeto del 1 al 4"); scanf("%d",&num3); }
}
}
int mostrar_numeros_introducidos_ () {
int f, num; int *numeros_introducidos; int i = 1; numeros_introducidos = (int *)malloc(i* sizeof(int)); free (numeros_introducidos);
printf("Introduce un numero: "); scanf("%d",&numeros_introducidos[1]); printf("Introduce un numero: "); scanf("%d",&numeros_introducidos[2]); printf("Introduce un numero: "); scanf("%d",&numeros_introducidos[3]); printf("Introduce un numero: "); scanf("%d",&numeros_introducidos[4]); printf("Introduce un numero: "); scanf("%d",&numeros_introducidos[5]); printf("Introduce un numero: "); scanf("%d",&numeros_introducidos[6]); printf("Introduce un numero: "); scanf("%d",&numeros_introducidos[7]); printf("Introduce un numero: "); scanf("%d",&numeros_introducidos[8]); printf("Introduce un numero: "); scanf("%d",&numeros_introducidos[9]); printf("Introduce un numero: "); scanf("%d",&numeros_introducidos[10]);
for(f=0; f<=10; f++) {
printf("Ha introducido el numero: %d en la posición %d",numeros_introducidos[1],f); }
}
int pedir_numero_correcto () {
int w,numero, posicion; bool correcto;
posicion = 0; correcto = false;
while (posicion <=10) {
printf("Introduce un numero del 1 al 4: "); scanf("%d",&numero);
if(numero<=4) {
correcto = true;
if (correcto == true) {
posicion +=1;
printf("Introduce el numero del 1 al 4,numero : %d",posicion);
} else {
posicion = posicion; printf("Introduce el numero del 1 al 4,numero : %d",posicion);
}
}
}
}
int porcentaje_aciertos () {
int f,aciertos,uno,dos, num, porcentaje, numeros_introducidos[num], arrayjugador[num];
aciertos = 0;
for(f = 0; f < num; f++) {
uno = numeros_introducidos[f], dos = arrayjugador[f];
if(uno == dos) {
aciertos +=1;
}
}
porcentaje = (aciertos / num) * 100;
printf("Has acertado %d de: %d", aciertos,num); printf("Es el %d porciento",porcentaje); }
int main (void) {
int num,f; int min = 5; int max =10;
srand(time(NULL));
num =rand ()%(max - min + 1) + 5;
int numerosaleatorios[num];
for(f=0; f<=num; f++) { numerosaleatorios[f] =rand()%4+1; }
printf("se han generado: %d numeros aleatorios",num);
//llamamos a las funciones de pedir numeros:
int numerosueuario ();
int rango_numero ();
int mostrar_numeros_introducidos_ ();
int pedir_numero_correcto ();
int porcentaje_aciertos ();
}
|
|
|
5
|
Programación / Programación C/C++ / Funcion que muestre aciertos y porcentaje
|
en: 4 Noviembre 2023, 21:19 pm
|
Hola de nuevo,
tengo este codigo:
int porcentaje_aciertos() {
int f,aciertos,valordelarreglo,valordelotroarreglo, num, porcentaje, numeros_introducidos, arrayjugador;
aciertos = 0;
for(f = 0; f < num; f++) {
valordelarreglo = numeros_introducidos[f], valordelotroarreglo = arrayjugador[f];
if(valordelarreglo == valordelotroarreglo) {
aciertos +=1;
}
} porcentaje = (aciertos / num) * 100;
printf("Has acertado %d de: %d", aciertos,num); printf("Es el %d porciento",porcentaje); }
que deberia mostrar aciertos y porcentajes, pero me da un error en la linia de: valordelarreglo = numeros_introducidos[f], valordelotroarreglo = arrayjugador ¿ALguien puede decirme por que me dice que no es puntero ni array?
|
|
|
6
|
Programación / Programación C/C++ / Re: Omparacion de 2 arrays
|
en: 2 Noviembre 2023, 15:15 pm
|
Entonces si te entendi bien:
for(int i=0; i<n_elem; ++i){ if(array_1 != array_2) { iguales = false;
Con el for decimos empieza en la posicion 0 y acaba en la 10 y ckn el if decimos si la posicion (representada en la i), del array 1 no es igual a la posición i del array 2 entonces false
|
|
|
7
|
Programación / Programación C/C++ / Omparacion de 2 arrays
|
en: 1 Noviembre 2023, 19:41 pm
|
Hola estaba por responder el otro tema con el mismo nombre, pero me salio una advertencia, asi que inicio nuevo tema:
Veran estoy intentando solventar esto:
Función “numeroNumeroAciertos”. Devuelve el número de aciertos que ha tenido el usuario.
Se trata de hacer 2 arrays que se deben comparar, tengo entendido que primero debes comparar su tamaño y luego valor a valor cada posición, esto es lo poco que he conseguido, lo que no condigo ss hacer la comparativa y 2 for anidados, algo que no entiendo del todo:
void numeros_de_aciertos() {
//elementos a comparar //contador de aciertos aciertos //comparación con if //bucle
int f, aciertos,arrayjugador[10],numeroaleatorio[10];
aciertos = 1;
int longituddelarreglo = sizeof(arrayjugador) / sizeof(arrayjugador[10]); int longituddelotroarreglo = sizeof(numeroaleatorio) / sizeof(numeroaleatorio[10]);
if(longituddelarreglo !=longituddelotroarreglo) {
printf("los arreglos no son iguales");
}
}
Si alguien me explicara el procedemiento
|
|
|
8
|
Programación / Programación C/C++ / Re: Función pedir un a llenar un array
|
en: 29 Octubre 2023, 14:28 pm
|
Hola de nuevo
Tengo este codigo:
int numeroaleatorio[10] = {1,2,4,3,3,2,4,1,2,1}; srand(time(NULL));//inicialización de los números aleatoriosint num,num2; for(int f = 0; f<=10; f++) { numeroaleatorio[f]=rand()%4;
}
Que debería rellenar el array con 10 números aleatorios del 0 al 4 pero necesito incluir un parámetro de entrada, que indique la posición de los números generados.
El caso es que tengo entendido que con el corchete inicias el array, pero no tengo claro como hacer lo del parámetro de entrada, que dictamina el orden
|
|
|
9
|
Programación / Programación C/C++ / Pasar a c
|
en: 27 Octubre 2023, 20:31 pm
|
Hola Estoy intentando codifixar a a C este pseudocodigo, ¿Alguien puede indicarme algunos conceptos como cadena?, no estoy seguro a si se refiere a array var num, divisor1, divisor2, divisor3: entero; fvar
num := leerEntero( );
mientras (num ≠ -1) hacer buscadivisor1(num, divisor1, divisor2,divisor3);
si loEs(num, divisor1, divisor2,divisor3) entonces printaExito(num, divisor1, divisor2,divisor3
sino printaFracaso(num);
fsi
num := leerEntero( );
fmientras
falgoritmo
accion printaExito( ent a: entero, ent b: entero, ent c: entero, ent d: entero )
escribirCadena(‘El número: ‘); escribirEntero(a);
escribirCadena(‘ es igual a ‘);
escribirEntero(b);
escribirCadena(‘ multiplicado por ‘);
escribirEntero(c);
escribirCadena(‘ y por ‘);
escribirEntero(d);
fsi
faccion
accion printaFracaso(ent a: entero) escribirCadena(‘El número: ‘); escribirEntero(a); escribirCadena(‘ no tiene divisores diferentes de 1 que multiplicados sean igual a el. ‘); faccion
funcion loEs(ent x: entero,ent y:entero,ent z: entero, ent w: entero): booleano;
retorna x = (y * z * w); ffuncion
accion buscadivisor1(ent n: entero, sal d1: entero, sal d2: entero, sal d3: entero ) var
encontrado: booleano; fvar
encontrado:=falso;
d1:=2;
d2:=2;
d3:=2;
mientras d1<=(n div 2) y no encontrado hacer buscadivisor2 (n,d1,d2,d3); encontrado:= loEs (n,d1,d2,d3);
si no encontrado entonces
d1:=d1+1;
fsi fmientras faccion accion buscadivisor2( ent num: entero, ent d1: entero, sal d2: entero, sal d3: entero )
var
encontrado: booleano; fvar
encontrado:=falso;
d2:=2;
d3:=2;
mientras d2 <= (num div 2) y no encontrado hacer buscadivisor3(num,d1,d2,d3);
encontrado:= loEs (num,d1,d2,d3); si no encontrado entonces d2:=d2+1; fsi fmientras faccion
accion buscadivisor3( ent num: entero, ent d1: entero, sal d2: entero, sal d3: entero )
var
encontrado: booleano; fvar
encontrado:=falso;
d3:=2;
mientras d3 <= (num div 2) y no encontrado hacer
encontrado:= loEs (num,d1,d2,d3); si no encontrado entonces d3:=d3+1; fsi fmientras faccion
¿Por otro lado alguien sabe de algun codificador a C?
|
|
|
|
|
|
|