Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] problemi varii

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    24

    [C] problemi varii

    Salve ragazzi stavo provando a fare un proggramma che costituito da vettori di struct , organizzati come un archivio telefonico, in ogni struct dovrei inserire nome cognome età e poi ordinarli tramite il bubble sort e eseguire la ricerca...Beh ho provato a scrivere il programma fino al bubble sort ma ho diversi errori in compilazione e trovandomi di fronte a struct i problemi sono stati tanti....Posto dis eguito gli errori e dopo il codice grazie da subito!


    H:\Programmi C\Esercitazione laboratorio\archivio2.c In function `scambio':

    88 H:\Programmi C\Esercitazione laboratorio\archivio2.c array initialized from non-constant array expression

    91 H:\Programmi C\Esercitazione laboratorio\archivio2.c incompatible types in assignment

    93 H:\Programmi C\Esercitazione laboratorio\archivio2.c syntax error before "char"


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

    #define N 2
    #define M 10
    struct persona {
    char nome[10];
    char cognome[10];
    unsigned short eta;
    };

    struct persona vettore[N];

    void flush(void);
    void leggistringa(char [],unsigned long);
    void riempi(void);
    void stampa(void);
    void scambio(char [],unsigned long , unsigned long);
    void bubblesort(void);

    main(){
    riempi();
    stampa();
    bubblesort();

    getchar();




    }

    void flush(void){
    while(getchar()!='\n');
    }

    void leggistringa (char s[], unsigned long dim) {
    int i;

    for(i=0;(s[i]=getchar())!='\n'&& i<dim-1;i++);

    s[i]='\0';

    }

    void riempi() {

    unsigned long i;
    for(i=0;i<N;i++) {
    printf("Inserisci il nome: ");
    leggistringa(vettore[i].nome, 10);



    printf("Inserisci il cognome: ");
    leggistringa(vettore[i].cognome, 10);



    printf("Inserisci l'eta: ");
    scanf("%d", &vettore[i].eta);

    flush();


    }
    }

    void stampa()
    {

    int i;
    for(i=0;i<N;i++)
    {

    printf("\nIl nome %i e': %s", i, vettore[i].nome);

    printf("\nIl cognome %i e': %s",i, vettore[i].cognome);

    printf("\nL'eta' %i e': %d",i, vettore[i].eta);
    }
    }

    void scambio(char s[], unsigned long i, unsigned long j){


    char temp [10]= vettore[i].cognome;


    vettore[i].cognome=vettore[j].cognome;

    vettore[j].cognome=char temp[M];
    }
    void bubblesort(){

    int ordinato;
    unsigned long dim;
    unsigned long i,j;
    ordinato=0;

    for(j=0;j<dim-1 &&!ordinato;j++){
    ordinato=1;
    for(i=dim-1;i>j;i--) if(vettore[i].cognome<vettore[i-1].cognome){
    scambio(vettore[i].cognome,i,i-1);
    ordinato=0;
    printf("\n vettore ordinato %s",vettore[i].cognome);

    };
    }

  2. #2

    Re: [C] problemi varii

    Originariamente inviato da Gryton
    88 H:\Programmi C\Esercitazione laboratorio\archivio2.c array initialized from non-constant array expression
    91 H:\Programmi C\Esercitazione laboratorio\archivio2.c incompatible types in assignment
    93 H:\Programmi C\Esercitazione laboratorio\archivio2.c syntax error before "char"
    Le stringhe si copiano con la funzione strcpy.

    Per il resto, ti ricordo che il codice va postato all'interno degli appositi tag [code]...[/code], che consentono così di mantenere intatta l'indentazione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E poi dovresti anche dirci cosa vorresti fare con

    vettore[j].cognome=char temp[M];
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    24
    Originariamente inviato da oregon
    E poi dovresti anche dirci cosa vorresti fare con

    vettore[j].cognome=char temp[M];


    E' una funzione di scambio che mi ha insegnato un mio amico sarebbe così

    void scambio (float v[], unsigned long i, unsigned long j){
    float temp= v[i];

    v[i]=v[j];
    v[j]=temp;

    }
    Io ho cercato di convertirla perchè mi interessava il campo cognome perchè col bubble sort sono i cognomi che devo scambiare...

    lo strcopy non so come si usa...Potreste dirmi dove posso trovare qualcosa al riguardo?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    24
    tag
    codice:
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    #define N 2
    #define M 10
    struct persona {
           char nome[10];
           char cognome[10];
           unsigned short eta;
    };
    
    struct persona vettore[N];
    
    void flush(void);
    void leggistringa(char [],unsigned long);
    void riempi(void);
    void stampa(void);
    void scambio(char [],unsigned long , unsigned long);
    void bubblesort(void);
    
    main(){
           riempi();
           stampa();
           bubblesort();
           
           getchar();
           
           
           
           
           }
    
    void flush(void){
         while(getchar()!='\n');
    }
    
    void leggistringa (char s[], unsigned long dim) {
         int i;
         
         for(i=0;(s[i]=getchar())!='\n'&& i<dim-1;i++);
         
              s[i]='\0';
          
    }
                                              
    void riempi() {
         
         unsigned long i;
         for(i=0;i<N;i++) {
                            printf("Inserisci il nome: ");
                            leggistringa(vettore[i].nome, 10);
                            
                            
                            
                            printf("Inserisci il cognome: ");
                            leggistringa(vettore[i].cognome, 10);
                            
                            
                            
                            printf("Inserisci l'eta: ");
                            scanf("%d", &vettore[i].eta);
                            
                            flush();
                            
                            
                            }
                                                 }
                                                 
    void stampa()
    {
         
         int i;
         for(i=0;i<N;i++)
         {
         
            printf("\nIl nome %i e': %s", i, vettore[i].nome);
            
            printf("\nIl cognome %i e': %s",i, vettore[i].cognome);
            
            printf("\nL'eta' %i e': %d",i, vettore[i].eta);
            }
    }
    
    void scambio(char s[], unsigned long i, unsigned long j){
         
         
         char temp [10]= vettore[i].cognome;
         
         
         vettore[i].cognome=vettore[j].cognome;
         
         vettore[j].cognome=char temp[M];
    }
    void bubblesort(){
         
         int ordinato;
         unsigned long dim;
         unsigned long i,j;
         ordinato=0;
         
         for(j=0;j<dim-1 &&!ordinato;j++){
                         ordinato=1;
                         for(i=dim-1;i>j;i--) if(vettore[i].cognome<vettore[i-1].cognome){
                                              scambio(vettore[i].cognome,i,i-1);
                                              ordinato=0;                                            
                         printf("\n vettore ordinato %s",vettore[i].cognome);
                                              
                                              };
    }
         
         
         
         
         
         
         
         
         
         
         }
    ecco comunque il codice intatto

  6. #6
    Originariamente inviato da Gryton
    lo strcopy non so come si usa...Potreste dirmi dove posso trovare qualcosa al riguardo?
    http://lmgtfy.com/?q=strcpy
    Comunque se non conosci la strcpy significa che non sei assolutamente pronto per scrivere un programma che utilizza le stringhe... (ri)studiati il capitolo sulle stringhe del tuo manuale di C.
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.