Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    78

    [C] vettore separato su k

    Salve forum devo realizzare il seguente "semplice" programma:

    Un vettore si dice separato se dato un indice k, gli elementi di indice inferiore a k sono tutti minori degli elementi di indice superiore a k. Si scriva una funzione che prenda in ingresso un vettore di interi, al dimensione del vettore e k, e restituisca 1 se il vettore è separato, 0 se non lo è.

    Io l'ho realizzato così ma ho l'impressione che qualcosa che non va.La mia idea è dividere il vettore in due parti :a)dall'elemento 0 all'elemento k del vettore b)dall'elemento k del vettore fino al riempimento..secondo voi il mio ragionamento è giusto.?

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    int vettore_separato(int v[],int n,int k);
    int main()
    {
        
        int k;
        int n=7;
        int separato;
        
        
        int vett[7]={3,7,9,7,12,11,10};
        printf("inserire l'indice k:\n");
        scanf("%d",&k);
        separato=vettore_separato(vett,7,k);
        if(separato==0)
        printf("Il vettore non e' separato su k");
        else
        printf("Il vettore e' separato su k");
        
        system("pause");
        
    }
    int vettore_separato(int vett[],int n,int k)
    {
        int i,j;
        for(i=0;i<k;i++)
          for(j=k+1;j<n;j++)
            if(vett[i]>=vett[j])
            return 0;
            return 1;
           
    }

  2. #2
    Mi sembra che tu ti stia complicando inutilmente la vita... perché confronti tutti gli elementi sotto con tutti quelli sopra (O(n^2))? Semplicemente cerca il massimo degli elementi prima di k (una passata O(k)), il minimo degli elementi oltre k (una passata (O(n-k)) e alla fine confronta: se il massimo pre-k è inferiore al minimo post-k allora il vettore è separato (il tutto in tempo lineare nella dimensione del vettore).

    Per inciso, dovresti ormai aver imparato che il linguaggio va sempre indicato nel titolo della discussione...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    78
    grz.seguirò il tuo suggerimento...chiedo scusa la prox volta..indicherò il linguaggio..alla prox e grz della risp..

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.