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 - alvr

#1
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:
CitarPlanteamiento 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:
Citarint 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:

#include <stdio.h>
#define N 30
#define M 25
#define JORNADAS 38

int iguales(char c1[M], char c2[M]);
int buscar(char jugador[M], char nombres[N][M], int numElem);

void main() {

char nombres[N][M];
int goles[JORNADAS];
char letra;

int fin;
int i=1, j, k; //variables para ciclos

FILE *archivo;
archivo = fopen("goles.txt", "r");

    fin = fscanf(archivo, "%d", &goles[i]);

while(fin != EOF) {


        for(j=0;j<goles[i];j++) {

            fscanf(archivo, "%s", nombres);

        }

        fin = fscanf(archivo, "%d", &goles[i+1]);

        i++;

}

}

int iguales(char c1[M], char c2[M]) {

int iguales, i = 0;

while (c1[i] != '\0' && c2[i] != '0' && c1[i] == c2[i]) i++;

iguales = (c1[i] == c2[i]);

return iguales;

}

int buscar(char jugador[M], char nombres[N][M], int numElem) {



}
#2

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.

CitarSe 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:

#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;

}