Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] problema con array in struct

    ciao ragazzi
    non mi va sto programma alla riga evidenziata

    #include <iostream>
    #include <stdlib.h>

    int main() {

    struct TAB{
    char NMA[15];
    char CDN[15];
    float DCD;
    float DB[20];
    char NMB[20];
    };

    int I,J,NCD,NB;
    TAB CD[10]; // vettore di 10 tabelle ( ossia 10 cd )
    // inserimento del numero cd e controlli condizionali
    do {
    printf(" Inserisci il numero dei cd: ");
    scanf("%u",&NCD);
    if (NCD>10) {
    printf (" Non puoi elaborare piu' di 10 cd. Reinserisci num ");
    }
    if (NCD<=0) {
    printf ("Il numero dei cd non può essere 0 e minore. Reinserisci num ");
    }
    } while ((NCD>10) || (NCD<=0));
    // caricamento dati relativi ai cd nel vettore
    I=1;
    do {
    printf(" Inserisci il nome dell'artista relativo al cd %u \n",I);
    scanf("%s",CD[I].NMA);
    printf(" Inserisci il titolo relativo al cd %u \n",I);
    scanf("%s",CD[I].CDN);
    do {
    printf(" Inserisci il numero di brani relativi al cd %u \n",I);
    scanf("%u",&NB);
    if (NB>20) {
    printf(" Non puoi elaborare piu' di 20 brani. Reinserisci num ");
    }
    if (NB<=0) {
    printf ("Il numero dei brani non può essere 0 e minore. Reinserisci num ");
    }
    } while ((NB>20) || (NB<=0));
    J=1;
    do {
    printf(" Inserisci il titolo del brano %u",J); printf(" relativo al cd %u \n",I);
    scanf("%s",CD[I].NMB[J]);
    printf(" Inserisci la durata del brano %u",J); printf(" relativo al cd %u \n",I);
    scanf("%f",&CD[I].DB[J]);
    CD[I].DCD=CD[I].DCD+CD[I].DB[J];
    J=J+1;
    } while (J<=NB);
    I=I+1;
    } while (I<=NCD);
    I=1;
    do {
    printf("\n");
    printf(" Informazioni relative al cd &u \n",I);
    printf(" Nome artista : %s",CD[I].NMA);
    printf(" Titolo del cd : %s",CD[I].CDN);
    printf(" Brano Durata");
    do {
    printf("%s",CD[I].NMB[J]);printf(" ");printf("%f",CD[I].DB[J]);
    printf("\n");
    J=J+1;
    } while (J<=NB);
    printf(" Durata del cd : %f",CD[I].DCD);
    I=I+1;
    } while (I<=NCD);

    system("PAUSE");
    return 0;
    }

    ho dichiarato dentro la struttura due array uno di reali e l'altro di tipo char. la riga selezionata legge il nome del brano [j] del cd[i] .. ho sbagliato qualcosa tra il codice? sono alle prime armi con il C non so che fare
    potreste darmi qualche mano?

  2. #2
    emh che sbadato il problema è che non va avanti a quella lettura.. inserisco un valore ma mi impedisce di continuare il prog

  3. #3
    nessuno sa dirmi qual'è il problema? up

  4. #4
    Utente di HTML.it L'avatar di buba88
    Registrato dal
    Feb 2004
    Messaggi
    538
    ti dispiacerebbe scrivere il codice identato?

    esempio:
    codice:
    #include <iostream>
    #include <stdlib.h>
    
    int main() {
    
    struct TAB{
       char NMA[15];
       char CDN[15];
       float DCD;
       float DB[20];
       char NMB[20];
    };
    
    int I,J,NCD,NB;
    TAB CD[10]; // vettore di 10 tabelle ( ossia 10 cd )
    
    // inserimento del numero cd e controlli condizionali
    do {
       printf(" Inserisci il numero dei cd: ");
       scanf("%u",&NCD);
       if (NCD>10) {
             printf (" Non puoi elaborare piu' di 10 cd.  Reinserisci num ");
       }
       if (NCD<=0) {
             printf ("Il numero dei cd non può essere 0 e minore. Reinserisci num ");
       }
    } while ((NCD>10) || (NCD<=0));

  5. #5
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    Ho dato solo una occhiata veloce...

    NMB[20] è un array di caratteri non un array di stringhe (cioè un array di array a carattere!)

    Con CD[I].NMB[J] indirizzi il J-esimo carattere di NMB dell'I-esimo cd.


    Se lavori con grandezze statiche devi definire il massimo numero di brani del cd e il max numero di caratteri del brano e poi definire nella struct

    char NMB[MAX_BRANI][MAX_CAR]

    a questo punto un indirizzamento del tipo CD[I].NMB[J] dovrebbe funzionare...
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  6. #6
    @buba88 lo so così non è molto leggibile ma se no la pagina srollava troppo orizzontalmente :P la prossima volta faro presente di quanto hai detto

    @habanero grazie funge

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.