Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 50
- ///da correggere e commentare
- void cancellaVettore(int, int, int, int*, int);
- int main()
- {
- ///passo base - ne rimane solo uno
- ///passo induttivo -
- int n, m, lista[MAX], i, pos=0, counter=0;
- printf("Numero persone: ");
- scanf("%d", &n);
- printf("\nNumero posizione da eliminare: ");
- scanf("%d", &m);
- for(i=0;i<n;i++){
- lista[i]=i+1;
- printf("\n%d", lista[i]);
- }
- printf("\n\n");
- cancellaVettore(n,m,pos,lista,counter);
- return 0;
- }
- void cancellaVettore(int N, int M, int pos, int *vettore, int counter){
- int i;
- int var;
- while(counter<N){
- pos=(pos+M-1)%(N-counter);
- var=vettore[pos+counter];
- for(i=pos+counter;i>counter;i--){
- vettore[i]=vettore[i-1];
- }
- vettore[counter]=var;
- //qui credo che dovrei incrementare counter, ma se lo faccio mi stampa un sacco di numeri a caso
- cancellaVettore(N-1, M, pos, vettore, counter);
- }
- for(i=0;i<N;i++){
- printf("%d ", vettore[i]);
- }
- }
- ///anziché diminuire la dimensione reinvoco la funzione passandogli il contatore decrementato DIM N-1, m rimane costante, lista)
Advertisement
Add Comment
Please, Sign In to add comment