Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - doitunkboo

#1
Hola, tengo que resolver un ejercicio en C, que consiste en escribir una función con el siguiente prototipo: int primoMayor(int num). La función recibe un número en la variable num y ha de devolver el mayor de los primos comprendido entre 2 y el valor de num. Esta función ha de valerse para esto de llamadas a la función esPrimo().

El programa principal debe solicitar un número mayor o igual a 2, que llame a la función primoMayor() y muestre el valor que devuelva por pantalla.

Este sería un ejemplo del programa:

Introduce un número superior a 1: 7
El mayor primo comprendido entre 2 y 7 es 7.

Esto es lo que llevo por el momento, no tengo claro como hacer el bucle que determine que número de todos los primos es el mayor, a ver si podéis ayudarme, gracias.


#include <stdio.h>
#include <math.h>

int esPrimo(int num) {
   int i;
   for (i=2; i<=sqrt(num); i++) {
       if (num%i == 0) {
           return 0;
       }
   }
   return 1;
}

int primoMayor(int num){
   int n, mayor;
   mayor=0;
   for (n=2;n<=num;n++)
   {
       if (esPrimo(n)>mayor)
           mayor=esPrimo(n);
   }

}

int main() {
   int num, n, i, mayor;

   do {
   printf("Introduce un número superior a 1: ");
   scanf("%d", &num);
   } while (num<0);

   primoMayor(num);

   if (primoMayor(num)){
       for(n=2;n<=num;n++){
           if (esPrimo(n))
               mayor=primoMayor(num);
       }
   }
   else
   printf("El número %d no es primo.\n", num);
   return 0;

   printf("El mayor primo comprendido entre 2 y %d es %d", num, mayor);
   return 0;
}
#2
Ya resolví el problema  :xD

Este es el código:

#include <stdio.h>

int main(){

   FILE *archivo = NULL;
   char fichero[80];
   char nombre[15];
   char inicial[5];
   int i, dato1, dato2;

   printf ("Teclea el nombre del archivo: ");
   scanf ("%s", fichero);
   archivo = fopen (fichero, "r");
   if (!archivo){
       printf ("Error: no se pudo abrir el fichero: %s\n", fichero);
       return 1;
   }
   printf("Teclea una inicial: ");
   scanf("%s", inicial);


   for (i=0; fscanf(archivo, "%s %d %d", nombre, &dato1, &dato2) == 3;){
       printf("%s %d %d\n", nombre, dato1, dato2);
       if (nombre[0]==inicial[0]){
           i++;
       }
   }
   printf("Hay %d nombres que empiezan por la inicial %c \n", i, inicial[0]);
   fclose (archivo);

   return 0;
}
#3
Hola, he pasado un ejecutable por el RDG packer detector y me sale esto, SkD Undetecttabler 2.0 (BETA) y no tengo ni idea de que es, de hecho es la primera vez que lo veo en un ejecutable.

La cuestión es que tengo un programa parcheado, pero que cuando realizas algunas operaciones con él, el programa transcurridos unos segundos se cierra sin devolver ningún mensaje de error.
También lo he pasado por el PEiD pero no detecta lo mismo, al menos no se si lo que detecta tiene relación con eso, el PEid me detecta esto...

ADLER32 :: 000A6A4F :: 004A764F
   The reference is above.
BASE64 table :: 000A9A64 :: 004AA664
   Referenced at 004AA480
   Referenced at 004AA4C1
   Referenced at 004AA503
   Referenced at 004AA535
List of small primes [long] :: 000E4D44 :: 004E5944
   Referenced at 004DA9EE
ZLIB deflate [long] :: 000E43C0 :: 004E4FC0
   Referenced at 004A70E0
   Referenced at 004A7300

Mi pregunta es, sabéis donde puede estar el problema? porque el programa esta bien parcheado y funciona bien salvo que se cierra de repente después de un rato.

Gracias y saludos.