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ú

Mensajes - MAFUS

#471
No tengo Linux ni SDL.

Se me ocurre que a lo mejor no sale del bucle de eventos.
Cambia el while por un if, a ver que ocurre. Si ya no funciona así entonces es que fondo no se redibuja a windowSurface.
#472
A ver, qué tal esto...
while(!quit){
SDL_BlitSurface(fondo,NULL,windowSurface,NULL);
SDL_Flip(windowSurface);
while(SDL_PollEvent(&tecla)) {
  if (tecla.type == SDL_QUIT) {
    quit = true;
  }
}


Flip lo que hace es llevar la imagen que hay en el la superficie al hardware. A ver si era eso.
#473
Has probado de hacer así:
bool quit = false;

while(!quit){
SDL_UpdateWindowSurface(window);
SDL_BlitSurface(fondo,NULL,windowSurface,NULL);
while(SDL_PollEvent(&tecla)) {
  if (tecla.type == SDL_QUIT) {
    quit = true;
  }
  if(tecla.type == SDL_WINDOWEVENT_RESTORED) {
    SDL_UpdateWindowSurface(window);
}

return 0;
#474
En verdad scanf te dice si lo ha conseguido ya que devuelve el número de conversiones con éxito realizadas:
#include <stdio.h>

int main() {
    int n;

    if(scanf("%i", &n) == 0)
        puts("Error, no es un número");
    else
        printf("El número es %i", n);
}
#475
Pues sí, todo depende del orden en que le indiques que pase al siguiente elemento y escriba lo que hay guardado en el nodo.

Algo así. Fíjate en lista_imprimir y lista_imprimir_invertido.


#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

typedef struct tnodo {
    int numero;
    struct tnodo *siguiente;
} nodo;

void lista_add(nodo **raiz, int numero) {
    nodo *actual = *raiz;
    nodo *aux = malloc(sizeof(nodo));

    aux->numero = numero;
    aux->siguiente = NULL;

    if(!actual)
        *raiz = aux;
    else {
        while(actual->siguiente)
            actual = actual->siguiente;
        actual->siguiente = aux;
    }
}

void lista_imprimir(nodo *raiz) {
    if(raiz) {
        printf("%d\n", raiz->numero);
        lista_imprimir(raiz->siguiente);
    }
}

void lista_imprimir_invertido(nodo *raiz) {
    if(raiz) {
        lista_imprimir_invertido(raiz->siguiente);
        printf("%d\n", raiz->numero);
    }
}

nodo * lista_nueva() {
    return NULL;
};

void lista_eliminar(nodo **raiz) {
    if(*raiz) {
        lista_eliminar(&(*raiz)->siguiente);
        free(*raiz);
        *raiz = NULL;
    }
}

int main() {
    int i;
    nodo *lista = lista_nueva();

    setlocale(LC_ALL, "spanish"); // Cosas mías para que windows saque acentos.

    for(i=1; i<=10; ++i)
        lista_add(&lista, i);

    puts("Lista del derecho:");
    lista_imprimir(lista);

    puts("\n");

    puts("List del revés:");
    lista_imprimir_invertido(lista);

    lista_eliminar(&lista);
}
#476
Basta con que sea así:
void mayorespromedio(float*clima) {
    float prom2= *clima/numsem;
    for(register unsigned char dia = 1 ; dia<TEM ; dia++ )
        if (clima[dia] >prom2)
            printf ("     dias que pasan el promedio %s\n:",sem[dia]);
}


Aparte usar una instrucción void para cargar prom2, que se puede cambiar por *clima/numsem, también repetía dos veces escribirpromedio, una en main y la otra en mayorespromedio, lo que hacía que la segunda vez se duplicara todo.
#477
Cierto, mea culpa.

Pues ya que el primer elemento de clima guarda la suma de todos los días, basta hacer que promedio valga *clima/numsem.
#478
Es importante leer los mensajes del compilador:
error: 'prom2' undeclared (first use in this function)

Quiere decir que no sabe que es prom2.
#479
La 1, 2 y 3 las entiendo. La 4 no sé qué opciones serían. El menú principal del 5 no lo dice. Y el 6 sería salir del programa, por lo que en ese caso ese es el menú principal.

Confuso.
#480
recv devuelve un entero con el número de datos que se han recibido.

Con recv recibirás los bytes que te mandará el servidor, eso es la cadena pero sin el carácter nulo.

Debes capturar el valor devuelto por recv y poner el caracter nulo en esa posición, después le das ese buffer a printf, o a puts para que lo imprima por pantalla.

Algo así:
int n = recv(s_cliente,cadena,sizeof cadena,0);
cadena[n] = '\0';
puts(cadena);