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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Temas
Páginas: [1]
1  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. }
2  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