Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-04-2006, 14:34   #1
Ciocco@256
Senior Member
 
L'Avatar di Ciocco@256
 
Iscritto dal: Sep 2003
Città: Torino
Messaggi: 752
[Help] strano problema Dev-cpp

Ciao a tutti, allora non ho mai avuto/visto questo problema:
ho fatto un programma in c, la compilazione non da errori, ma quando lo lancio sembra fare una marea di calcoli, e non mi mostra a video l'output che dovrebbe.
Ok, allora faccio il debug per vedere dove ho sbagliato...ma NON ho sbagliato!!! Dal debug funziona tutto a meraviglia! Faccio semplicemente "step successivo" dall'inizio alla fine e fila tutto liscio come l'olio.

Che è successo ? Che faccio ? Non ho toccato nessuna impostazione particolare nel Dev (e tra l'altro ho già compilato altri programmi e non ho avuto mai di questi problemi).

Grazie a tutti come sempre
__________________
ubuntulinux | Windows 7
Trattato con: enghel | thunder01 | char66 | siemens | topogatto | ::tony design | alcol | mammabell | uazzamerican | niko0 | oldfield |
Ciocco@256 è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2006, 18:02   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2787
Posta il codice, così vediamo.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2006, 18:19   #3
Ciocco@256
Senior Member
 
L'Avatar di Ciocco@256
 
Iscritto dal: Sep 2003
Città: Torino
Messaggi: 752
Quote:
Originariamente inviato da wingman87
Posta il codice, così vediamo.
Ok, eccolo! Non l'ho postato prima perchè credevo che andando da debug fosse a posto. Comunque:
Codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*controllare che non ne manchi qualcuno*/
#define input "input.txt"
#define MAXNOME 31

typedef struct bst_t {
        char *nome;
        struct bst_t *sinistra;
        struct bst_t *destra;
        } bst;

/*prototipi*/
bst* cercaposto(bst *,char *,short int *);
void stampaalbero(bst *);
short soluzione(bst *,char *,char *,short *,short *);
short visitoinordine(bst *,char *);


int main(void)
{   bst *testa=NULL,*tmp,*posto;
    FILE *f;
    char buffer[MAXNOME], K1[MAXNOME], K2[MAXNOME];
    int i;
    short int dir=-1; /*0->sx 1->dx _ per inserimento nel bst*/
    short trov1=0,trov2=0;
    
    printf("Esercitazione 5 - APA - BST\n");

/*SEZIONE LETTURA DEL FILE*/
    if ( (f=fopen(input,"r"))== NULL )
    {   printf("Errore apertura file.Esco.\n");
        return 0;                                 
        }

    /*azzero il buffer*/
    for(i=0;i<MAXNOME;i++)    buffer[i]='0';                   

    /*tengo conto che i nomi possono contenere degli spazi*/
    while(!feof(f))
    {   
    if(testa==NULL)
    {   fscanf(f,"%s",buffer);
         if( (testa=(bst*)calloc(1,sizeof(bst)))==NULL)
            {   printf("Errore allocazione memoria.\n");
                return;                                 
                }
        if( (testa->nome=(char*)calloc(strlen(buffer),sizeof(char)))==NULL)
            {   printf("Errore allocazione memoria.\n");
                return;                                 
                }
        testa->sinistra=testa->destra=NULL;
        strcpy(testa->nome,buffer);
        }
    else
    {   fscanf(f,"%s",buffer);
        if( (tmp=(bst*)calloc(1,sizeof(bst)))==NULL )
            {   printf("Errore allocazione memoria.\n");
                return;                                 
                }
        if( (tmp->nome=(char*)calloc(strlen(buffer),sizeof(char)))==NULL)
            {   printf("Errore allocazione memoria.\n");
                return;                                 
                }
        tmp->sinistra=tmp->destra=NULL;
        strcpy(tmp->nome,buffer);
        posto=cercaposto(testa,tmp->nome,&dir); /*CERCO LA POSIZIONE CORRETTA IN CUI INSERIRE IL NUOVO DATO.*/

        if (posto==NULL) free(tmp);

        if (dir==1) posto->destra=tmp;
        else if (dir==0) posto->sinistra=tmp;
        }
    }

    fclose(f);

/*FINE SEZIONE*/


    printf("Elenco delle chiavi caricate:\n");
    stampaalbero(testa);

/*SEZIONE LETTURA DELLE CHIAVI TRA CUI CERCARE.*/

    printf("Inserisci le due chiavi agli estremi dell'intervallo che vuoi visualizzare.\n");
    /*Leggo K1 e K2, controllo che l'input sia corretto.*/
    do{ printf("Inseriscile in ordine alfabetico!\n");
        do    {
              printf("K1: ");
              fgets(buffer,MAXNOME,stdin);
              fflush(stdin);
              } while ( (sscanf(buffer,"%s",K1)) != 1 );
        do    {
              printf("K2: ");
              fgets(buffer,MAXNOME,stdin);
              fflush(stdin);
              } while ( (sscanf(buffer,"%s",K2)) != 1 );
    } while ( strcmp(K1,K2)>=0 );

/*FINE SEZIONE*/

/*CALCOLO LE CHIAVI COMPRESE TRA K1 e K2*/

if ( soluzione(testa,K1,K2,&trov1,&trov2)==0 ) {   printf("Esecuzione interrotta.\n");
                                                   if(trov1==0)   printf("La chiave k1 non esiste.\n");
                                                   else if(trov2==0)   printf("La chiave k2 non esiste.\n");
                                                   printf("Premi un tasto per uscire.\n");
                                                   getchar();
                                                   return 0;
                                                   }

/*CONLCUDO*/
else
    {   printf("Esecuzione terminata con successo, premi un tasto per uscire.\nBuona giornata!\n");
        getchar();
        return 0;
        }

}




bst* cercaposto(bst *rad,char *nome,short int *direzione)

{   bst *tmp;
    if(rad!=NULL)
    {   if(strcmp(rad->nome,nome)==0) return NULL;
        else if(strcmp(rad->nome,nome)<0)  {  if (rad->destra!=NULL) tmp=cercaposto(rad->destra,nome,direzione);
                                              else  { *direzione=1; return rad; }
                                              }
        else {   if (rad->sinistra!=NULL) tmp=cercaposto(rad->sinistra,nome,direzione);
                 else  { *direzione=0; return rad; }
                 } 
        return tmp;
        }

}





void stampaalbero(bst *rad) /*stampa in-order*/

{   if(rad!=NULL)
    {   stampaalbero(rad->sinistra);
        printf("%s\n",rad->nome);
        stampaalbero(rad->destra);
        }
    return;
}


short soluzione(bst *rad,char *k1,char *k2,short *trovato1,short *trovato2) /*trovo e stampo le chiavi richieste*/

{
if(rad!=NULL)
   {
   if( strcmp(k1,rad->nome)==0 )  {    *trovato1=1;
                                       printf("%s\n",rad->nome);
                                       *trovato2=visitoinordine(rad->destra,k2);
                                       return *trovato2;
                                       }
   else if( strcmp(k1,rad->nome)<0)    soluzione(rad->sinistra,k1,k2,trovato1,trovato2);
   else soluzione(rad->destra,k1,k2,trovato1,trovato2);
   if (*trovato1==1 && *trovato2==0 && strcmp(rad->nome,k2)!=0 )   {   printf("%s\n",rad->nome);
                                                                       *trovato2=visitoinordine(rad->destra,k2);
                                                                       return *trovato2;
                                                                       }
   else if(strcmp(rad->nome,k2)==0)    printf("%s\n",rad->nome);
   }

if(*trovato1==0 || *trovato2==0)   return 0;
else return 1;
}



short visitoinordine(bst *t,char *k2)

{
int a;
if(t!=NULL)
   {
   a=visitoinordine(t->sinistra,k2);
   if(strcmp(t->nome,k2)<0)  {   printf("%s\n",t->nome);
                                 a=visitoinordine(t->destra,k2);
                                 }
   else if(strcmp(t->nome,k2)==0) {   printf("%s\n",t->nome);
                                      return 1;
                                  }
/*   else a=visitoinordine(t->sinistra,k2);*/
   return a;
   }

else return 0;

}
Leggo da file delle parole, le metto in un bst, le stampo, chiedo in input da tastiera due di queste parole in ordine alfabetico, stampo a video tutte le parole comprese tra le due parole inserite da tastiera in ordine alfabetico.
Devo cercare di visitare in modo efficiente l'albero (cioè di non visitarlo tutto, altrimenti è facile (ma inefficiente) ).
__________________
ubuntulinux | Windows 7
Trattato con: enghel | thunder01 | char66 | siemens | topogatto | ::tony design | alcol | mammabell | uazzamerican | niko0 | oldfield |

Ultima modifica di Ciocco@256 : 15-04-2006 alle 18:24.
Ciocco@256 è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2006, 12:35   #4
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2787
A me funziona.. L'unica cosa che ho dovuto fare (perchè altrimenti non mi compilava) è stata aggiungere degli zeri dopo alcuni "return".. Per fare il test ho creato un file io e ci ho scritto un po' di caxxate, forse tu usi un file molto + grande, non so..
wingman87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
AOC propone un QD-OLED al prezzo di un I...
AGCOM segnalerà la AI Mode di Goo...
L'Estonia porta ChatGPT in classe: firma...
2 nm giapponesi contro TSMC: il piano di...
Questa scopa elettrica Tineco iFLOOR 5 è...
FRITZ!Box 6825 4G sbarca in Italia a 129...
Red Hat presenta Digital Sovereignty Rea...
AMD Zen 6 'Olympic Ridge': sette configu...
Amazon batte Walmart dopo 30 anni: il so...
Digos nel mirino dell'intelligence cines...
Sony non vuole aumentare il prezzo della...
Energia geotermica: la (costosa) rispost...
MG ha già venduto 1 milione di au...
"Something Big Is Happening" —...
Renault chiude il 2025 con una perdita r...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:02.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v