Pagina 3 di 5 primaprima 1 2 3 4 5 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 41

Discussione: [c] pascal --> C

  1. #21
    Originariamente inviato da inform@tic@p@zz
    codice:
    
    
    stavo provando a fare quest'altro (vedere allegato), sulla base di quello ki mi è stato fornito, ma mi stavo incasinando..
    stavo procedendo bene?
    suggerimenti?
    basta tradurre(che parolone per lo + si tratta di sintassi e basta in questo caso) la funzione in c.
    Il main invece è errato perchè richiami la funz. precedente(xpartition()) e inoltre fai operazioni in +.
    Ecco il prog :
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    //prototipo della funz. per poterla implementare sotto il main
    void selectsort(int *, int );
    
    int main() {
    
    int *vet,n,i;
    printf("\nQuanti elementi vuoi inserire nell'array?\n");
    scanf("%d",&n);
    vet=(int *) malloc (n*sizeof(int));
    for(i=0;i<n;i++){
     printf("\nInserisci il %d elemento dell'array  ",i+1);
     scanf("%d",&vet[i]);
    }
    
    selectsort(vet,n);
    printf("\n?L'array ordinato è il seguente \n");
    for(i=0;i<n;i++)
     printf(" %d ",vet[i]);
    
    system("pause");
    return 0;
    }
    
    
    /* funz tradotta e sistemata */
    void selectsort(int *a, int n ){
    int i,j,min,p;
    
    for(i=1;i<n-1;i++){
     min=a[i]; p=i;
      for(j=i+1;j<n;j++)
       if (a[j]<min)
        min=a[j]; p=j;
      a[p]=a[i]; a[i]=min;
    		  }
    }


    ps la funz selecton selection sort di ordinamento l'ho tradotta e riscritta da capo visto che c'erano molti errori nella tua

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  2. #22
    uff!!!
    non me n'ero accorta ke l'avessi modificata, e stavo aspettando!!! ke dici se faccio come lui: poi torno a posto con la testa???

    grazie 1000!

    ps: posso tornare a disturbarti?
    @@@

  3. #23
    Originariamente inviato da inform@tic@p@zz
    uff!!!
    non me n'ero accorta ke l'avessi modificata, e stavo aspettando!!! ke dici se faccio come lui: poi torno a posto con la testa???

    grazie 1000!

    ps: posso tornare a disturbarti?
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  4. #24
    ciao, questo è quello ke il prof mi ha detto in merito al tuo programma...

    mi sembra giusto farteli notare...

    __________________________________________________ ____
    perche' il vettore lo usi a partire dalla posizione 1 e non dalla 0? comunque non e' concettualmente sbagliato
    __________________________________________________ ____
    a cosa serve nella xpartition l'istruzione
    "for (h = i; h <= j; h++) { b++; }"?
    __________________________________________________ ____
    Non ti sembra piu' chiaro se nella procedura di partizionamento usi la notazione con indice (ad es. a[i]) per riferirti ad un elemento del vettore anziche' usando il nome del vettore (ad es. *a)? __________________________________________________ ____
    Tra l'altro mi sembra che non è possibile incrementare il nome di un vettore!
    @@@

  5. #25
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    567
    allora...

    1) parto da 1 semplicemente xkè in Pascal partivi da 1...

    2) non ne ho idea... non sono stato ad interpretare la funzione, ho semplicemente tradotto il Pascal

    3) 'a' e 'A' sono oggetti ben diversi: 'A' è l'array e 'a' il puntatore all'array (spero che non sia un lapsus, ma C è Case Sensitive). Per questo uso a++ e non A[i]: l'array non è dichiarato in globale (ho tradotto un Pascal che usava "var A etc..." quindi passava un puntatore e mi sono attenuto a quello che ho letto. Ci sono modi diversi per fare una stessa cosa.). Incrementando 'a' passo da un'allocazione di memoria all'altra, quini da un elemento dell'array 'A' al successivo.
    "Come vedi tutto è usuale, solo che il tempo chiude la borsa e c'è il sospetto che sia triviale l'affanno e l'ansimo dopo una corsa, l'ansia volgare del giorno dopo, la fine triste della partita, il lento scorrere senza uno scopo di questa cosa che chiami vita."

  6. #26
    :sgrat: al prof!



    spero tu non ti sia sentito offeso, mi sembrava giusto dirtelo!

    @@@

  7. #27
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    567
    ma va... che offeso, figurati

    "Come vedi tutto è usuale, solo che il tempo chiude la borsa e c'è il sospetto che sia triviale l'affanno e l'ansimo dopo una corsa, l'ansia volgare del giorno dopo, la fine triste della partita, il lento scorrere senza uno scopo di questa cosa che chiami vita."

  8. #28
    cmq non vorrei sbagliarmi ma la procedura che avete tradotto è parte di quell'ordinamento chiamato quicksort :tongue:

  9. #29
    partizionamento

    codice:
    void xpartition(double *a, int n, int *p, double x) {
     int i, j, h;
     double t;
     i = 1;
     j = n;
     while ((i < j) && (a[i] < x)) {
      i++;
     }
     while ((i < j) && (x < a[j])) {
      j--;
     }
     while (i < j) {
      t = a[i];
      a[i] = a[j];
      a[j] = t;
      i++;
      j--;
      while (a[i] < x) {
       i++;
      }
      while (x < a[j]) {
       j--;
      }
     }
     *p = j;
    }
    
    
    int main() {
     double a[10], x;
     int n = 9, p;
     int *pp;
     
     x = 23; /*assegna il valore che vuoi*/
     pp = &p;
     /* assegna i valori all'array... da A[1] ad A[9] */
     xpartition(a, n, pp, x);
     
     getch();
     return 0;
    }

    avrei bisogno di un main ke kieda in input gli elementi del vettore e l'elemento x di partizione, e visualizzi in output il vettore partizionato e l'indice di partizione

    il main deve kiamare la procedura di partizionamento





    naturalmente, io kiedo, se non è possibile non importa, avete fatto già tanto x me



    @@@

  10. #30
    chiedo nuovamente scusa

    ho provato ad implementarlo io, ma non mi ordina nulla!

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    void xpartition(int *a, int n, int *p, int x) {
     int i, j, h;
     double t;
     i = 1;
     j = n;
     while ((i < j) && (a[i] < x)) {
      i++;
     }
     while ((i < j) && (x < a[j])) {
      j--;
     }
     while (i < j) {
      t = a[i];
      a[i] = a[j];
      a[j] = t;
      i++;
      j--;
      while (a[i] < x) {
       i++;
      }
      while (x < a[j]) {
       j--;
      }
     }
     *p = j;
    }
    
    
    int main() {
    
    int *vet,n,i;
    int *pp, p, x;
    double a[10];
    
    printf("\nQuanti elementi vuoi inserire nell'array?\n");
    scanf("%d",&n);
    vet=(int *) malloc (n*sizeof(int));
    
    printf("\nInserisci l'elemento di partizionamento x: \n");
    scanf("%d",&x);
    
    for(i=0;i<n;i++){
     printf("\nInserisci il %d elemento dell'array: \n",i+1);
     scanf("%d",&vet[i]);
    }
    
    pp = &p;
    xpartition(a, n, pp, x);
    
    printf("\n?L'array ordinato e' il seguente: \n");
    for(i=0;i<n;i++)
     printf(" %d \n",vet[i]);
    
     
    system("pause");
    return 0;
    }
    consigli?



    @@@

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