Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    63

    aiutatemi in questo programma in c vi prego

    mi spiegate perchè non me lo compila per favore??anzi perchè su ubuntu me lo compila e con un compilatore di windows no(mi segna addirittura 20 errori .. su struct struttura) .
    Per favore aiutatemi


    #include <math.h>
    #include <stdio.h>
    #include <string.h>
    #include "codice.h"

    #define DIM 100

    int bite(int n);

    main()
    {
    int i,bit,k,n;
    printf("Inserire il numero di valori dell'algebra : \n");
    scanf("%d",&n);
    bit=bite(n);
    typedef struct struttura {
    int bin[bit];
    char s[DIM];
    };
    typedef struttura alg[DIM];
    alg algebra;

    for(i=0;i<n;i++)
    {
    printf("valore algebra: ");
    gets(algebra.s[i]);
    for(k=0;k<bit;k++)
    {
    struttura.bin[bit-1-k]=n%2;
    n=n/2;
    }
    }

    for(i=0;i<n;i++)
    {
    printf("%c",algebra[i].s[i]);
    printf("%c",algebra[i].bin[i]);
    }

    }



    int bite(int n)
    {
    int k,i;
    k=1;
    for(i=1;k<n;i++)
    {
    k=k*2;
    }
    i=i-1;
    return i;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Prima di tutto, leggi il regolamento di questo forum e usa un TITOLO adeguato ...

    In secondo luogo, non hai riportato il codice contenuto nel file

    codice.h

    e quindi non si puo' controllare ...

    In ogni caso, non scrivere le

    codice:
    typedef struct struttura {
    int bin[bit];
    char s[DIM];
    };
    
    typedef struttura alg[DIM];
    all'interno del main, ma fuori, all'inizio.

    E poi, fatto piu' importante, indica un valore COSTANTE al posto della variabile bit nella riga

    int bin[bit];

    cosi' come fatto per la DIM, perche' del codice cosi' scritto puo' essere compilato solamente da compilatori C99 (cosa comunque sconsigliata perche' poco utilizzata).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    63
    scusate per il titolo ...non avevo visto ..ora ho solo il problema di capire come cambiarlo...


    grazie oregon per la spiegazione ..scusami ma è da un po' che nn programmo e non mi ricordo tante cose ...
    c'è un qualche modo per fare per fare un array con una dimensione non costante ..pensavo che avendo dato prima un valore alla variabile bit potesse andar bene ...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da arre
    scusate per il titolo ...non avevo visto ..ora ho solo il problema di capire come cambiarlo...
    No problem ma, se vuoi usufruire appieno del forum, rispettane il regolamento ...

    c'è un qualche modo per fare per fare un array con una dimensione non costante ..
    Inserisci nella struttura un puntatore ad un vettore di interi e allocalo dinamicamente quando disponi della dimensione con la malloc ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    63
    grazie ...cavolo sei velocissimo a rispondere .. beh allora ne approfitto per un altra domanda.
    l'ho riscritto cosi( per ora ho messo fissa la dimensione dell'array) e ho messo fuori dal main la struttura ma ancora mi da errore alla riga

    ---typedef struttura alg[DIM];
    mi dice che alg non è identificato perchè proprio con quella riga lo identificassi ---
    grazie per l'etuale risposta

    #include <math.h>
    #include <stdio.h>
    #include <string.h>
    #include "codice.h"

    #define DIM 100

    int bite(int n);
    typedef struct struttura {
    int bin[DIM];
    char s[DIM];
    };
    typedef struttura alg[DIM];

    alg algebra;


    main()
    {
    int i,bit,k,n;
    printf("Inserire il numero di valori dell'algebra : \n");
    scanf("%d",&n);
    bit=bite(n);


    for(i=0;i<n;i++)
    {
    printf("valore algebra: ");
    gets(algebra.s[i]);
    for(k=0;k<bit;k++)
    {
    struttura.bin[bit-1-k]=n%2;
    n=n/2;
    }
    }

    for(i=0;i<n;i++)
    {
    printf("%c",algebra[i].s[i]);
    printf("%c",algebra[i].bin[i]);
    }

    }



    int bite(int n)
    {
    int k,i;
    k=1;
    for(i=1;k<n;i++)
    {
    k=k*2;
    }
    i=i-1;
    return i;
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da arre
    typedef struttura alg[DIM];
    Scusa ... ma cosa vuoi indicare con questa riga?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    63
    volevo far un array di (struttura) di dimensione DIM
    io avrei usato solo

    struttura algebra[DIM];

    ma ho visto su libro di informatica che per farlo fa questi due passi

    typedef struttura alg[DIM];
    alg algebra;

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Il resto del programma e' ambiguo e quindi non e' facile darti una risposta ...

    Ad esempio, a volte usi

    gets(algebra.s[i]);

    e altre

    algebra[i].s[i]);

    e altre ancora scrivi

    struttura.bin[bit-1-k]

    ???
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    63
    si me ne son accorto ..è che sto fondendo...in tutti va usato " in teoria "

    algebra[i].s[i]

    ma cmq il problema è che non identifica ne algebra ,ne alg ...
    non so bene come devo identificarlo..gli altri errori a tempo di compilazione poi pian piano li trovo ..


    giusto per farti capire.
    in teoria sto programma dovrebbe chiederti un numero .
    in base al numero capisce di quanti bit ha bisogno per codificarlo in binario .
    poi man mano chiede all'utente di inserire un carattere e per ogni carattere dovrebbe identificare una struttura {carattere ;numero binario}

    ex:
    n=4
    scrivo i caratteri {s0,s1,r,f}

    e lui dovrebbe farmi la struttura con {s0,00}
    {s1,01}
    {r,10}
    {f,11}

    poi in teoria dovrei andar avanti ...ma qua mi son già bloccato una giornata.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    63
    grazie oregon ...con qualche accorgimento ora per lo meno compila senza errori ..
    ora se qualcuno mi aiuta a capire perchè una volta che mi chiede il valore dell'algebra si blocca e mi da errore gle ne sarei grato ...
    grazie per l'eventuale risposta


    #include <math.h>
    #include <stdio.h>
    #include <string.h>
    #include "codice.h"

    #define DIM 100

    int bite(int n);

    struct struttura {
    int bin[DIM];
    char s[DIM];
    };

    struct struttura algebra[DIM];



    main()
    {
    int i,bit,k,n;
    printf("Inserire il numero di valori dell'algebra : \n");
    scanf("%d",&n);
    bit=bite(n);
    for(i=0;i<n;i++)
    {
    printf("valore algebra: ");
    scanf("%c",algebra[i].s[i]);
    for(k=0;k<bit;k++)
    {
    algebra[i].bin[bit-1-k]=n%2;
    n=n/2;
    }
    }

    for(i=0;i<n;i++)
    {
    printf("%c",algebra[i].s[i]);
    printf("%d",algebra[i].bin[i]);
    }

    }



    int bite(int n)
    {
    int k,i;
    k=1;
    for(i=1;k<n;i++)
    {
    k=k*2;
    }
    i=i-1;
    return i;
    }

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.