Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C] - Comprensione e analisi codice

    Ciao a tutti, mi sto esercitando in vista di un esame e tra i vari esercici di analisi e comprensione del codice mi è capitato quest'ultimo:

    codice:
    #include <stdio.h>
    
    char *g(char *c) {
        int i,n=strlen(c);
        char *k=(char *)malloc(sizeof(char)*(n+1));
        for(i=0; i<n; i++){
                 k[i]=c[n-1-i];
                 printf("%c\n", k[i]);
                 }
        k[n]='\0';
        return k;
     }
    
    int f(char *c, int b) {
        if(*c == '\0') return 0;
        printf("%c  %d\n", *c, b);
        return *c= 10+b*f(c+1,b);
    }
    
    int main() {
        int a[]={4,5,6};
        char b[]="012";
        int i;
        for(i=0; i<3; i++) printf ("%i\n\n", f(g(b), a[i]));
        getch();
    }
    Devo scriverne l'output. Il fatto è che provando ad eseguirlo ottengo risultati completamente diversi da quelli che ho ottenuto io simulandone l'esecuzione.
    Infatti i risultati che ottengo io "manualmente" sono:
    codice:
    210 310 430
    invece quelli che ottengo eseguendo il programma sono i seguenti:
    codice:
    -46 54 -82
    Non riesco proprio a capire come il risultato possa essere negativo...help !

  2. #2
    Innanzitutto spiega cosa vuoi che faccia il tuo programma.
    Ci sono 10 tipi di persone al mondo, chi conosce il sistema binario e chi no.

  3. #3
    Originariamente inviato da bigmickey
    Innanzitutto spiega cosa vuoi che faccia il tuo programma.
    è proprio lo scopo dell'esercizio (trovato sul materiale che mette a disposizione il professore) comprendere che cosa faccia il programma e quindi scriverne l'output. Ma proprio non riesco a venirne a capo...come detto sopra i rusultati che ottengo sono discordanti e inoltre non sembrerebbe esserci alcuna logicità nelle operazioni svolte. Voi che dite?

  4. #4
    ah per informazione le printf le ho inserite io successivamente per capire dove potessero essere eventuali errori che ho commesso!

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Devi fare un po' di attenzione perche' la funzione f e' ricorsiva ...

    Prova ad eseguire il programma con il Debug passo passo, esaminando il contenuto delle variaibili ad ogni esecuzione di linee di codice ....

  6. #6
    Originariamente inviato da oregon
    Devi fare un po' di attenzione perche' la funzione f e' ricorsiva ...

    Prova ad eseguire il programma con il Debug passo passo, esaminando il contenuto delle variaibili ad ogni esecuzione di linee di codice ....
    ....scusa l'ignoranza ma come faccio ad eseguire il programma in debug?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quale strumento utilizzi?

  8. #8
    Originariamente inviato da oregon
    Quale strumento utilizzi?
    sotto windows dev c++ e invece sotto linux gcc...grazie infinite per la pazienza

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Con dev, c'e' il menu Debug ... tasto F8 ...

  10. #10
    Originariamente inviato da oregon
    Con dev, c'e' il menu Debug ... tasto F8 ...
    ok trovato...il fatto è che lancio il debug quello che ottengo è il programma gia eseguito per intero...sbaglio qualcosa? come faccio a fare passo passo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.