Mostra notizie nelle discussioni
  • Avatar
    Scritto da
    Non Autenticato
    il 2009-10-20 19:23:00.0 alle 2009-10-20 19:23:00.0
    Indovina indovinello...
    Secondo voi cosa fà questo programma in C?

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

    int leggiArray(int vettore[]);
    int modificaArray(int vettore[],int numero_elementi);
    void stampaArray(int vettore[],int numero_elementi);
    main()
    {
    int numero_valori,array[100];

    numero_valori=leggiArray(array);
    numero_valori=modificaArray(array,numero_valori);
    stampaArray(array,numero_valori);
    system ("pause");
    return 0;
    }
    int leggiArray(int vettore[])
    {
    int numero_elementi;

    printf("inserisci il numero di elementi:\n");
    scanf ("%d",&numero_elementi);
    for (int i=0;i<numero_elementi;i++)
        {
        printf ("inserisci il %d elemento",i+1);
        scanf("%d",&vettore[i]);
        }
    return (numero_elementi);
    }
    int modificaArray(int array[],int numero_elementi)
    {
    int i=0,j,multiplo;

    printf ("inserire il multiplo da eliminare:\n");
    scanf ("%d",&multiplo);

    while (i<numero_elementi)
         {
         if (array[i]%multiplo==0)
             {
             numero_elementi=numero_elementi-1;
             j=i;
             while (j<numero_elementi)
                   {
                   array[j]=array[j+1];
                   j++;
                   }
         i--;
             }
         i++;
         }
    return numero_elementi;
    }
    void stampaArray(int array[],int numerovalori)
    {
    int i=0;

    printf ("ecco l'array definitivo:\n");

    while (i<numerovalori)
    {
    printf ("%d\n",array[i]);
    i++;
    }
    }
    • Avatar
      Scritto da
      Non Autenticato
      il 2009-10-20 19:26:00.0 alle 2009-10-20 19:26:00.0
      Re: Indovina indovinello...
      - Scritto da:
      > Secondo voi cosa fà questo programma in C?
      >
      > #include <stdio.h>
      > #include <stdlib.h>
      >
      > int leggiArray(int vettore[]);
      > int modificaArray(int vettore[],int
      > numero_elementi);
      > void stampaArray(int vettore[],int
      > numero_elementi);
      > main()
      > {
      > int numero_valori,array[100];
      >
      > numero_valori=leggiArray(array);
      > numero_valori=modificaArray(array,numero_valori);
      > stampaArray(array,numero_valori);
      > system ("pause");
      > return 0;
      > }
      > int leggiArray(int vettore[])
      > {
      > int numero_elementi;
      >
      > printf("inserisci il numero di elementi:\n");
      > scanf ("%d",&numero_elementi);
      > for (int i=0;i<numero_elementi;i++)
      >     {
      >     printf ("inserisci il %d elemento",i+1);
      >     scanf("%d",&vettore[i]);
      >     }
      > return (numero_elementi);
      > }
      > int modificaArray(int array[],int numero_elementi)
      > {
      > int i=0,j,multiplo;
      >
      > printf ("inserire il multiplo da eliminare:\n");
      > scanf ("%d",&multiplo);
      >
      > while (i<numero_elementi)
      >       {
      >       if (array[i]%multiplo==0)
      >         {
      >         numero_elementi=numero_elementi-1;
      >         j=i;
      >         while (j<numero_elementi)
      >                {
      >                array[j]=array[j+1];
      >                j++;
      >                }
      >       i--;
      >         }
      >       i++;
      >       }
      > return numero_elementi;
      > }
      > void stampaArray(int array[],int numerovalori)
      > {
      > int i=0;
      >
      > printf ("ecco l'array definitivo:\n");
      >
      > while (i<numerovalori)
      > {
      > printf ("%d\n",array[i]);
      > i++;
      > }
      > }



      Immagine postata dall'utente
      • Avatar
        Scritto da
        Non Autenticato
        il 2009-10-20 19:35:00.0 alle 2009-10-20 19:35:00.0
        Re: Indovina indovinello...

        - Scritto da:
        > - Scritto da:
        > > Secondo voi cosa fà questo programma in C?
        > >
        > > #include <stdio.h>
        > > #include <stdlib.h>
        > >
        > > int leggiArray(int vettore[]);
        > > int modificaArray(int vettore[],int
        > > numero_elementi);
        > > void stampaArray(int vettore[],int
        > > numero_elementi);
        > > main()
        > > {
        > > int numero_valori,array[100];
        > >
        > > numero_valori=leggiArray(array);
        > >
        > numero_valori=modificaArray(array,numero_valori);
        > > stampaArray(array,numero_valori);
        > > system ("pause");
        > > return 0;
        > > }
        > > int leggiArray(int vettore[])
        > > {
        > > int numero_elementi;
        > >
        > > printf("inserisci il numero di elementi:\n");
        > > scanf ("%d",&numero_elementi);
        > > for (int i=0;i<numero_elementi;i++)
        > >     {
        > >     printf ("inserisci il %d elemento",i+1);
        > >     scanf("%d",&vettore[i]);
        > >     }
        > > return (numero_elementi);
        > > }
        > > int modificaArray(int array[],int
        > numero_elementi)
        > > {
        > > int i=0,j,multiplo;
        > >
        > > printf ("inserire il multiplo da eliminare:\n");
        > > scanf ("%d",&multiplo);
        > >
        > > while (i<numero_elementi)
        > >       {
        > >       if (array[i]%multiplo==0)
        > >         {
        > >         numero_elementi=numero_elementi-1;
        > >         j=i;
        > >         while (j<numero_elementi)
        > >                {
        > >                array[j]=array[j+1];
        > >                j++;
        > >                }
        > >       i--;
        > >         }
        > >       i++;
        > >       }
        > > return numero_elementi;
        > > }
        > > void stampaArray(int array[],int numerovalori)
        > > {
        > > int i=0;
        > >
        > > printf ("ecco l'array definitivo:\n");
        > >
        > > while (i<numerovalori)
        > > {
        > > printf ("%d\n",array[i]);
        > > i++;
        > > }
        > > }
        >
        >
        >
        > [img]http://img76.imageshack.us/img76/7810/imin1.p

        sbagliato,sei un ciuccione! Arrabbiato
        Vieni al prossimo appello! A bocca storta
    • Avatar
      ☺
      Scritto da
      avvelentani
      Cubicolario
      il 2009-10-20 19:53:00.0 alle 2009-10-20 19:53:00.0
      Trollate totali: 18184
      Re: Indovina indovinello...
      permette di eseguire codice arbitrario tramite buffer overflow?
      I think happiness is love
      - Vladimir Putin
      • Avatar
        Scritto da
        Non Autenticato
        il 2009-10-20 19:54:00.0 alle 2009-10-20 19:54:00.0
        Re: Indovina indovinello...

        - Scritto da: avvelentani
        > permette di eseguire codice arbitrario tramite
        > buffer
        > overflow?

        Una delusione così grande da te non me la sarei mai aspettata... Triste
        • Avatar
          ☺
          Scritto da
          avvelentani
          Cubicolario
          il 2009-10-20 20:00:00.0 alle 2009-10-20 20:00:00.0
          Trollate totali: 18184
          Re: Indovina indovinello...

          - Scritto da:
          >
          > - Scritto da: avvelentani
          > > permette di eseguire codice arbitrario tramite
          > > buffer
          > > overflow?
          >
          > Una delusione così grande da te non me la sarei
          > mai aspettata...
          > Triste

          ok, l'intenzione del codice sembrerebbe essere eliminare da un array i multipli di un numero pero` c'e` un buffer overflow (non so se sia effettivamente exploitabile) e l'algoritmo utilizzato e` inefficente.
          I think happiness is love
          - Vladimir Putin
          • Avatar
            Scritto da
            Non Autenticato
            il 2009-10-20 20:02:00.0 alle 2009-10-20 20:02:00.0
            Re: Indovina indovinello...

            - Scritto da: avvelentani
            >
            > - Scritto da:
            > >
            > > - Scritto da: avvelentani
            > > > permette di eseguire codice arbitrario tramite
            > > > buffer
            > > > overflow?
            > >
            > > Una delusione così grande da te non me la sarei
            > > mai aspettata...
            > > Triste
            >
            > ok, l'intenzione del codice sembrerebbe essere
            > eliminare da un array i multipli di un numero
            > pero` c'e` un buffer overflow (non so se sia
            > effettivamente exploitabile) e l'algoritmo
            > utilizzato e`
            > inefficente.

            Si in effetti avrei brasato un pò meglio l'algoritmo.. A bocca storta
          • Avatar
            Scritto da
            Non Autenticato
            il 2009-10-20 20:06:00.0 alle 2009-10-20 20:06:00.0
            Re: Indovina indovinello...

            - Scritto da: avvelentani
            >
            > - Scritto da:
            > >
            > > - Scritto da: avvelentani
            > > > permette di eseguire codice arbitrario tramite
            > > > buffer
            > > > overflow?
            > >
            > > Una delusione così grande da te non me la sarei
            > > mai aspettata...
            > > Triste
            >
            > ok, l'intenzione del codice sembrerebbe essere
            > eliminare da un array i multipli di un numero
            > pero` c'e` un buffer overflow (non so se sia
            > effettivamente exploitabile) e l'algoritmo
            > utilizzato e`
            > inefficente.

            Questo secondo te è più efficiente?

            #include <stdlib.h>
            #include <stdio.h>
            int leggi_array(int A[]);
            int elimina_multipli(int A[], int n, int k);
            void stampa_array(int A[], int n);
            main() {
                int n, A[100], k;
                n = leggi_array(A);
                printf("digita k: ");
                scanf("%d", &k);
                n = elimina_multipli(A, n, k);
                stampa_array(A, n);
                system ("pause");
                return(0);
            }

            int leggi_array(int A[]) {
                int i, n;
                printf("numero di elementi: ");
                scanf("%d", &n);
                printf("digita %d elementi: ", n);
                for (i=0; i<n; i++)
                    scanf("%d", &A[i]);
                return(n);
            }
            int elimina_multipli(int A[], int n, int k) {
                int i, j;
                i = 0;
                while (i < n) {
                     if (A[i] % k == 0) {
                         n = n-1;
                         for (j=i; j<n; j++) {
                             A[j] = A[j+1];
                         }
                         i--;
                     }
                     i++;
                }
                return(n);
            }
            void stampa_array(int A[], int n) {
                int i;
                for(i=0; i<n; i++)
                         printf("%d ", A[i]);
                printf("\n");
                return;   
            }
            • Avatar
              ☺
              Scritto da
              avvelentani
              Cubicolario
              il 2009-10-20 20:10:00.0 alle 2009-10-20 20:10:00.0
              Trollate totali: 18184
              Re: Indovina indovinello...

              - Scritto da:
              >
              > - Scritto da: avvelentani
              > >
              > > - Scritto da:
              > > >
              > > > - Scritto da: avvelentani
              > > > > permette di eseguire codice arbitrario
              > tramite
              > > > > buffer
              > > > > overflow?
              > > >
              > > > Una delusione così grande da te non me la
              > sarei
              > > > mai aspettata...
              > > > Triste
              > >
              > > ok, l'intenzione del codice sembrerebbe essere
              > > eliminare da un array i multipli di un numero
              > > pero` c'e` un buffer overflow (non so se sia
              > > effettivamente exploitabile) e l'algoritmo
              > > utilizzato e`
              > > inefficente.
              >
              > Questo secondo te è più efficiente?
              >
              > #include <stdlib.h>
              > #include <stdio.h>
              > int leggi_array(int A[]);
              > int elimina_multipli(int A[], int n, int k);
              > void stampa_array(int A[], int n);
              > main() {
              >     int n, A[100], k;
              >     n = leggi_array(A);
              >     printf("digita k: ");
              >     scanf("%d", &k);
              >     n = elimina_multipli(A, n, k);
              >     stampa_array(A, n);
              >     system ("pause");
              >     return(0);
              > }
              >
              > int leggi_array(int A[]) {
              >     int i, n;
              >     printf("numero di elementi: ");
              >     scanf("%d", &n);
              >     printf("digita %d elementi: ", n);
              >     for (i=0; i<n; i++)
              >         scanf("%d", &A[i]);
              >     return(n);
              > }
              > int elimina_multipli(int A[], int n, int k) {
              >     int i, j;
              >     i = 0;
              >     while (i < n) {
              >           if (A[i] % k == 0) {
              >             n = n-1;
              >             for (j=i; j<n; j++) {
              >                 A[j] = A[j+1];
              >             }
              >             i--;
              >           }
              >           i++;
              >     }
              >     return(n);
              > }
              > void stampa_array(int A[], int n) {
              >     int i;
              >     for(i=0; i<n; i++)
              >             printf("%d ", A[i]);
              >     printf("\n");
              >     return;   
              > }

              no.
              I think happiness is love
              - Vladimir Putin
              • Avatar
                Scritto da
                Non Autenticato
                il 2009-10-20 20:18:00.0 alle 2009-10-20 20:18:00.0
                Re: Indovina indovinello...

                - Scritto da: avvelentani
                >
                > - Scritto da:
                > >
                > > - Scritto da: avvelentani
                > > >
                > > > - Scritto da:
                > > > >
                > > > > - Scritto da: avvelentani
                > > > > > permette di eseguire codice arbitrario
                > > tramite
                > > > > > buffer
                > > > > > overflow?
                > > > >
                > > > > Una delusione così grande da te non me la
                > > sarei
                > > > > mai aspettata...
                > > > > Triste
                > > >
                > > > ok, l'intenzione del codice sembrerebbe essere
                > > > eliminare da un array i multipli di un numero
                > > > pero` c'e` un buffer overflow (non so se sia
                > > > effettivamente exploitabile) e l'algoritmo
                > > > utilizzato e`
                > > > inefficente.
                > >
                > > Questo secondo te è più efficiente?
                > >
                > > #include <stdlib.h>
                > > #include <stdio.h>
                > > int leggi_array(int A[]);
                > > int elimina_multipli(int A[], int n, int k);
                > > void stampa_array(int A[], int n);
                > > main() {
                > >     int n, A[100], k;
                > >     n = leggi_array(A);
                > >     printf("digita k: ");
                > >     scanf("%d", &k);
                > >     n = elimina_multipli(A, n, k);
                > >     stampa_array(A, n);
                > >     system ("pause");
                > >     return(0);
                > > }
                > >
                > > int leggi_array(int A[]) {
                > >     int i, n;
                > >     printf("numero di elementi: ");
                > >     scanf("%d", &n);
                > >     printf("digita %d elementi: ", n);
                > >     for (i=0; i<n; i++)
                > >         scanf("%d", &A[i]);
                > >     return(n);
                > > }
                > > int elimina_multipli(int A[], int n, int k) {
                > >     int i, j;
                > >     i = 0;
                > >     while (i < n) {
                > >           if (A[i] % k == 0) {
                > >             n = n-1;
                > >             for (j=i; j<n; j++) {
                > >                 A[j] = A[j+1];
                > >             }
                > >             i--;
                > >           }
                > >           i++;
                > >     }
                > >     return(n);
                > > }
                > > void stampa_array(int A[], int n) {
                > >     int i;
                > >     for(i=0; i<n; i++)
                > >             printf("%d ", A[i]);
                > >     printf("\n");
                > >     return;   
                > > }
                >
                > no.

                Eppure lo ha scritto un professore! Perplesso
                Secondo te come dovrebbe essere fatto?Newbie, inesperto
                • Avatar
                  ☺
                  Scritto da
                  avvelentani
                  Cubicolario
                  il 2009-10-20 20:30:00.0 alle 2009-10-20 20:30:00.0
                  Trollate totali: 18184
                  Re: Indovina indovinello...

                  - Scritto da:
                  >
                  > - Scritto da: avvelentani
                  > >
                  > > - Scritto da:
                  > > >
                  > > > - Scritto da: avvelentani
                  > > > >
                  > > > > - Scritto da:
                  > > > > >
                  > > > > > - Scritto da: avvelentani
                  > > > > > > permette di eseguire codice arbitrario
                  > > > tramite
                  > > > > > > buffer
                  > > > > > > overflow?
                  > > > > >
                  > > > > > Una delusione così grande da te non me la
                  > > > sarei
                  > > > > > mai aspettata...
                  > > > > > Triste
                  > > > >
                  > > > > ok, l'intenzione del codice sembrerebbe
                  > essere
                  > > > > eliminare da un array i multipli di un
                  > numero
                  > > > > pero` c'e` un buffer overflow (non so se sia
                  > > > > effettivamente exploitabile) e l'algoritmo
                  > > > > utilizzato e`
                  > > > > inefficente.
                  > > >
                  > > > Questo secondo te è più efficiente?
                  > > >
                  > > > #include <stdlib.h>
                  > > > #include <stdio.h>
                  > > > int leggi_array(int A[]);
                  > > > int elimina_multipli(int A[], int n, int k);
                  > > > void stampa_array(int A[], int n);
                  > > > main() {
                  > > >     int n, A[100], k;
                  > > >     n = leggi_array(A);
                  > > >     printf("digita k: ");
                  > > >     scanf("%d", &k);
                  > > >     n = elimina_multipli(A, n, k);
                  > > >     stampa_array(A, n);
                  > > >     system ("pause");
                  > > >     return(0);
                  > > > }
                  > > >
                  > > > int leggi_array(int A[]) {
                  > > >     int i, n;
                  > > >     printf("numero di elementi: ");
                  > > >     scanf("%d", &n);
                  > > >     printf("digita %d elementi: ", n);
                  > > >     for (i=0; i<n; i++)
                  > > >         scanf("%d", &A[i]);
                  > > >     return(n);
                  > > > }
                  > > > int elimina_multipli(int A[], int n, int k) {
                  > > >     int i, j;
                  > > >     i = 0;
                  > > >     while (i < n) {
                  > > >           if (A[i] % k == 0) {
                  > > >             n = n-1;
                  > > >             for (j=i; j<n; j++) {
                  > > >                 A[j] = A[j+1];
                  > > >             }
                  > > >             i--;
                  > > >           }
                  > > >           i++;
                  > > >     }
                  > > >     return(n);
                  > > > }
                  > > > void stampa_array(int A[], int n) {
                  > > >     int i;
                  > > >     for(i=0; i<n; i++)
                  > > >             printf("%d ", A[i]);
                  > > >     printf("\n");
                  > > >     return;   
                  > > > }
                  > >
                  > > no.
                  >
                  > Eppure lo ha scritto un professore! Perplesso
                  > Secondo te come dovrebbe essere fatto?Newbie, inesperto

                  elimina_multipli e` O(n**2) quando potrebbe essere scritto in O(n)

                  void elimina_multipli(int A[], int n, int k) {
                     int src = 0, dst = 0;
                     for (; src < n; ++src)
                        if (A[src] % k != 0)
                           A[dst++] = A[src];
                     return dst;
                  }
                  


                  non ho voglia di compilarlo e testarlo quindi ci saranno quasi sicuramente bug.
                  I think happiness is love
                  - Vladimir Putin
<softv>

Pagina generata in 70 millisecondi

Utenti attivi: 9 nell'ultimo minuto, 27 negli ultimi cinque minuti, 60 negli ultimi 15 minuti