-
Indovina indovinello...Scritto daNon Autenticatoil 2009-10-20 19:23:00.0 alle 2009-10-20 19:23:00.0Secondo 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++;
}
}
-
Re: Indovina indovinello...Scritto daNon Autenticatoil 2009-10-20 19:26:00.0 alle 2009-10-20 19:26:00.0- 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++;
> }
> }
-
Re: Indovina indovinello...Scritto daNon Autenticatoil 2009-10-20 19:35:00.0 alle 2009-10-20 19:35:00.0
- 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!
Vieni al prossimo appello!
-
-
Re: Indovina indovinello...Scritto daavvelentaniCubicolarioil 2009-10-20 19:53:00.0 alle 2009-10-20 19:53:00.0Trollate totali: 18184permette di eseguire codice arbitrario tramite buffer overflow?I think happiness is love
- Vladimir Putin-
Re: Indovina indovinello...Scritto daNon Autenticatoil 2009-10-20 19:54:00.0 alle 2009-10-20 19:54:00.0
- Scritto da: avvelentani
> permette di eseguire codice arbitrario tramite
> buffer
> overflow?
Una delusione così grande da te non me la sarei mai aspettata...
-
Re: Indovina indovinello...Scritto daavvelentaniCubicolarioil 2009-10-20 20:00:00.0 alle 2009-10-20 20:00:00.0Trollate totali: 18184
- 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...
>
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-
Re: Indovina indovinello...Scritto daNon Autenticatoil 2009-10-20 20:02:00.0 alle 2009-10-20 20:02:00.0
- 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...
> >
>
> 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..
-
Re: Indovina indovinello...Scritto daNon Autenticatoil 2009-10-20 20:06:00.0 alle 2009-10-20 20:06:00.0
- 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...
> >
>
> 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;
}-
Re: Indovina indovinello...Scritto daavvelentaniCubicolarioil 2009-10-20 20:10:00.0 alle 2009-10-20 20:10:00.0Trollate totali: 18184
- 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...
> > >
> >
> > 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-
Re: Indovina indovinello...Scritto daNon Autenticatoil 2009-10-20 20:18:00.0 alle 2009-10-20 20:18:00.0
- 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...
> > > >
> > >
> > > 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!
Secondo te come dovrebbe essere fatto?
-
Re: Indovina indovinello...Scritto daavvelentaniCubicolarioil 2009-10-20 20:30:00.0 alle 2009-10-20 20:30:00.0Trollate totali: 18184
- 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...
> > > > >
> > > >
> > > > 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!
> Secondo te come dovrebbe essere fatto?
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
-
-
-
-
-
-
-