elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Ayuda delimitar fin de archivo en: 9 Enero 2013, 20:11 pm
Yo suelo utilizar un while() de esta forma:

Código
  1.  
  2. fin = fscanf(archivo, "%d", &numero);
  3.  
  4. while(fin != -1) {
  5.  
  6.    //tu codigo
  7.    fin = fscanf(archivo, "%d", &numero);
  8.  
  9. }
  10.  
  11.  

Con fin lo que haces es obtener el número de datos leídos, en este caso sería uno, ya que solo hay un %d. Cuando fscanf no encuentra más datos que escanear devuelve el valor -1, por eso el ciclo se repite hasta llegar al final.
2  Programación / Programación C/C++ / [C] Problema con cadenas en: 9 Enero 2013, 19:38 pm
Buenas, tengo un problema con una práctica que he de hacer, y no me sale por más que lo intento.

La idea sería esta:
Citar
Planteamiento general:
Leer el fichero,  creando los subvectores  nombres y goles, además de obtener el número de jugadores que han marcado. Para ello:
   Iniciar variables
   Leer numero de goles (fin = fscanf…)
   Mientras no sea fin de fichero (fin!=EOF)
      Leer tantos nombres como numero de goles (for)
fscanf (Fich, “%s”, jugador);/*dependerá de los identificadores declarados*/
          y para cada nombre leído:
         Buscarlo en el vector de nombres
Si ya existe ese nombre incrementar el numero de goles marcados por ese jugador en 1
Si no existe ese nombre, insertarlo al final del vector nombres y anotarle en el vector de goles el gol marcado (no olvidar incrementar numElem en 1)

      Leer numero de goles de la siguiente jornada

   Escribir resultados:
   Recorrer subvectores (for desde 0 hasta numElem-1)
      Escribir nombres y goles

Y hay que utilizar al menos las siguientes funciones:
Citar
int iguales (char c1[M], char c2[M]);
/*retorna 1 si las cadenas c1 y c2 son iguales y 0 en otro caso*/

int buscar (char jugador[M], char nombres [N][M], int numElem);
/*busca el nombre jugador en el subarray de nombres, retornando la posición en la que lo encuentra, en caso de no encontrarlo retorna el valor numElem*/

En resumidas cuentas, se abre un fichero, en una cadena se guardan los goles y en otra los goleadores. Si un jugador ya había marcado un gol, sumarle otro.

De momento este es el código que tengo:

Código
  1. #include <stdio.h>
  2. #define N 30
  3. #define M 25
  4. #define JORNADAS 38
  5.  
  6. int iguales(char c1[M], char c2[M]);
  7. int buscar(char jugador[M], char nombres[N][M], int numElem);
  8.  
  9. void main() {
  10.  
  11. char nombres[N][M];
  12. int goles[JORNADAS];
  13. char letra;
  14.  
  15. int fin;
  16. int i=1, j, k; //variables para ciclos
  17.  
  18. FILE *archivo;
  19. archivo = fopen("goles.txt", "r");
  20.  
  21.    fin = fscanf(archivo, "%d", &goles[i]);
  22.  
  23. while(fin != EOF) {
  24.  
  25.  
  26.        for(j=0;j<goles[i];j++) {
  27.  
  28.            fscanf(archivo, "%s", nombres);
  29.  
  30.        }
  31.  
  32.        fin = fscanf(archivo, "%d", &goles[i+1]);
  33.  
  34.        i++;
  35.  
  36. }
  37.  
  38. }
  39.  
  40. int iguales(char c1[M], char c2[M]) {
  41.  
  42. int iguales, i = 0;
  43.  
  44. while (c1[i] != '\0' && c2[i] != '0' && c1[i] == c2[i]) i++;
  45.  
  46. iguales = (c1[i] == c2[i]);
  47.  
  48. return iguales;
  49.  
  50. }
  51.  
  52. int buscar(char jugador[M], char nombres[N][M], int numElem) {
  53.  
  54.  
  55.  
  56. }
3  Programación / Programación C/C++ / Re: Compilando aplicacion C++ con Netbeans en: 9 Enero 2013, 19:04 pm
Intenta hacer esto a ver si se soluciona: http://stackoverflow.com/a/338412
4  Programación / Programación C/C++ / Re: [C] Problema con bucle en: 4 Enero 2013, 00:03 am
leosansan, no pide lo mismo, pero gracias de todas formas.

Al final he empezado de nuevo y parece que funciona bien. Aquí dejo el código por si alguno le resulta útil en un futuro.

Código:
#include <stdio.h>
 
int esMayus(char c);
 

void main() {
 
char letra;
int l1, l2, l3, enc = 0;

printf("Escribe una secuencia de texto: ");
scanf("%c", &letra);
 
while(letra != '.' && enc == 0) {

if(esMayus(letra) == 1) {

l1 = 1;
scanf("%c", &letra);

if(esMayus(letra) == 1) {

l2 = 1;
scanf("%c", &letra);

if(esMayus(letra) == 1 && l2 == 1) {

l3 = 1;
scanf("%c", &letra);
enc = 1;

}

}

} else {

scanf("%c", &letra);

}

}

if(l1 == l2 && l2 == l3) printf("Tres mayusculas consecutivas.");
else printf("No hay tres mayusculas consecutivas.");

}
 
int esMayus(char c) {
 
if(c >= 'A' && c <= 'Z') return 1;
else return 0;
 
}
5  Programación / Programación C/C++ / Re: [C] Problema con bucle en: 3 Enero 2013, 22:06 pm
Gracias por la ayuda leosansan pero necesito que compruebe que hay tres mayúsculas seguidas, y por el código que has enviado cuenta las mayúsculas que hay incluso estando separadas.
6  Programación / Programación C/C++ / {Solucionado} [C] Detectar tres mayúsculas seguidas en: 3 Enero 2013, 19:39 pm

Hola, tengo que hacer un programa en el que se escriba la frase y detecte si hay tres mayusculas consecutivas mediante una función. Aquí dejo el enunciado.

Citar
Se introduce por teclado un texto que acaba en un punto. Escribir un programa que nos indique si existen tres letras mayúsculas consecutivas en el texto. Para resolver el problema realizar una función EsMayusc que a partir de un carácter nos devuelva un 1 si el carácter es alfabético mayúscula y devuelva un 0 en cualquier otro caso. No deberán leerse más datos que los necesarios.

Y aquí dejo el código que tengo hasta ahora, pero que claramente no funciona:

Código:
#include <stdio.h>

int esMayus(char c);

void main() {

char letra;

printf("Escribe una secuencia de texto: ");
scanf("%c", &letra);

while(letra != '.') {

if(esMayus(letra) == 1) {

scanf("%c", &letra);

if(esMayus(letra) == 1) {

scanf("%c", &letra);

if(esMayus(letra) == 1) {

printf("Encontrado.");

}

}

}

scanf("%c", &letra);

}

}

int esMayus(char c) {

if(c >= 'A' && c <= 'Z') return 1;
else return 0;

}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines