Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    fondere due vettori in uno [c]

    allora devo fondere due vettori ordinati in uno tenendo conto dell'ordine io ho fatto così e funziona fino agli ultimi tre:

    codice:
    #include <stdio.h>
    
    
    
    int main(){
        
        int vett[14],vett2[7]={1,4,7,8,12,34,45},vett3[7]={0,5,26,43,78,90,91};
        int j=0,k=0;
        for(int i=0;i<14;i++){
              
              if(vett2[j]<vett3[k]){
                 vett[i]=vett2[j];
                 j++;
              }
              else{
                 vett[i]=vett3[k];
                 k++;
               }
              }
              
        for(int p=0;p<14;p++){
            printf("%d ",vett[p]);
        }
        return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: fondere due vettori in uno [c]

    Originariamente inviato da Metflar
    allora devo fondere due vettori ordinati in uno tenendo conto dell'ordine io ho fatto così e funziona fino agli ultimi tre:
    A me sembra corretto. Occhio che la definizione di variabili nella espressione di inizializzazione del for non è ANSI-C (solo in C99/C++).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    Re: Re: fondere due vettori in uno [c]

    Originariamente inviato da andbin
    A me sembra corretto. Occhio che la definizione di variabili nella espressione di inizializzazione del for non è ANSI-C (solo in C99/C++).
    no gli ultimi tre mi da -1 0 1 quindi nn funzia e nn so + dove sbattere la testa

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: Re: Re: fondere due vettori in uno [c]

    Originariamente inviato da Metflar
    no gli ultimi tre mi da -1 0 1 quindi nn funzia e nn so + dove sbattere la testa
    È vero, guardandolo meglio si nota che c'è un problema concettuale: j e k possono andare "oltre" il limite degli array. Prendiamo l'array vett2, dopo che hai fatto la comparazione con 45, non dovresti più fare la comparazione. Idem per l'altro array.
    Insomma ... se hai terminato un array, solo l'altro è ancora utile.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    Re: Re: Re: Re: fondere due vettori in uno [c]

    Originariamente inviato da andbin
    È vero, guardandolo meglio si nota che c'è un problema concettuale: j e k possono andare "oltre" il limite degli array. Prendiamo l'array vett2, dopo che hai fatto la comparazione con 45, non dovresti più fare la comparazione. Idem per l'altro array.
    Insomma ... se hai terminato un array, solo l'altro è ancora utile.
    quindi cosa posso fare? :master:

  6. #6
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500

    risposta

    Ciao...davo un occhiata alle inserzioni...e ho visto questa discussione...sono ancora un principiante del C...però...ho provato a risplvere il tuo problema...e...il massimo che ho potuto fare è questo...t posto il codice poi vedi tu se può essere utile...
    codice:
    #include <stdio.h>
    
    int main(){
        
        int vett[14], vett2[7]={1,4,7,8,12,34,45}, vett3[7]={0,5,26,43,78,90,91};
        int j=0, k=0, i, p;
        
        for ( i=0; i<14 && j<7 && k<7; i++ ){
              
              if ( vett2[j] < vett3[k] ) {
                 vett[i] = vett2[j];
                 j++;
              }
              else {
                 vett[i] = vett3[k];
                 k++;
               }
              }
              
        if ( j == 7 ) {
             for ( ; i<14; i++ ) {
                 vett[i] = vett3[k];
                 k++;
             }
        }
        else {
             for ( ; i<14; i++ ) {
                 vett[i] = vett2[j];
                 j++; 
             }
        }           
              
        for( p=0; p<14; p++){
            printf("%d ",vett[p]);
        }
        system ("pause");
    }

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.