Manugal
16-11-2005, 13:31
Ciao. :)
Devo scrivere un programma che dato un vettore t[0,...,n-1] di interi di dimensione n ed una posizione 0<=m<=n-1, devo considerarlo diviso in due sotto intervalli t[0,...,m-1][m,...,n-1]. Mi deve restituire il vettore t con questi due sottointervalli intercambiati.
Cioè il vettore t in output deve essere t[m,...,n|0,...m-1].
Esempio
Input : t: =[1,2,3,4,5,6,7,8] e m:= 4
Output deve essere =[5,6,7,8,1,2,3,4]
Il codice l'ho scritto però ho notato che non stampa la parte "dopo lo scambio":
#include <stdio.h>
#include <stdlib.h>
int *interscambio(int [], int, int);
int main(void){
int i,n,m, *risultato;
printf("Inserisci la lunghezza del vettore: ");
scanf("%d", &n);
int *t=(int*) malloc(sizeof(int)*n);
for(i=0; i<n; ++i)
scanf("%d", &t[i]);
printf("Inserisci il punto in cui interscambiare: ");
scanf("%d", &m);
printf("Prima dello scambio: \n");
for(i=0; i<n; ++i)
printf("%d", t[i]);
risultato=interscambio(t,n,m);
printf("\nDopo lo scambio: \n%s");
for(i=0; i<n; ++i)
printf("%d", risultato[i]);
return 0;
}
int *interscambio(int t[], int n, int m){
int *aux=(int *) malloc(sizeof(int)*n);
int i,k=0;
for(i=m; i<n; ++i)
aux[k++]=t[i];
for(i=0; i<m; ++i)
aux[k++]=t[i];
return aux;
}
Chi mi può aiutare? Grazie.
Devo scrivere un programma che dato un vettore t[0,...,n-1] di interi di dimensione n ed una posizione 0<=m<=n-1, devo considerarlo diviso in due sotto intervalli t[0,...,m-1][m,...,n-1]. Mi deve restituire il vettore t con questi due sottointervalli intercambiati.
Cioè il vettore t in output deve essere t[m,...,n|0,...m-1].
Esempio
Input : t: =[1,2,3,4,5,6,7,8] e m:= 4
Output deve essere =[5,6,7,8,1,2,3,4]
Il codice l'ho scritto però ho notato che non stampa la parte "dopo lo scambio":
#include <stdio.h>
#include <stdlib.h>
int *interscambio(int [], int, int);
int main(void){
int i,n,m, *risultato;
printf("Inserisci la lunghezza del vettore: ");
scanf("%d", &n);
int *t=(int*) malloc(sizeof(int)*n);
for(i=0; i<n; ++i)
scanf("%d", &t[i]);
printf("Inserisci il punto in cui interscambiare: ");
scanf("%d", &m);
printf("Prima dello scambio: \n");
for(i=0; i<n; ++i)
printf("%d", t[i]);
risultato=interscambio(t,n,m);
printf("\nDopo lo scambio: \n%s");
for(i=0; i<n; ++i)
printf("%d", risultato[i]);
return 0;
}
int *interscambio(int t[], int n, int m){
int *aux=(int *) malloc(sizeof(int)*n);
int i,k=0;
for(i=m; i<n; ++i)
aux[k++]=t[i];
for(i=0; i<m; ++i)
aux[k++]=t[i];
return aux;
}
Chi mi può aiutare? Grazie.