PDA

Visualizza la versione completa : [c]rotazione array


sertor185
05-05-2008, 22:43
volevo realizzare un semplice programma che ruota circolarmenten un array di una posizione...
es[1,2,3,4] a [2,3,4,1] ovvimente non su 4 ma n...dovrebbe essere facile ma siccome non conosco il c non lo so fare...aiuto!!! grazie

pallinopinco
05-05-2008, 23:16
Se non conosci il C perché vuoi farlo proprio in questo linguaggio?

sertor185
05-05-2008, 23:18
mi serviva in c :oVVoVe:

pallinopinco
05-05-2008, 23:31
mi serviva in c


Sì, questo l'hai detto anche nel primo messaggio, però non hai spiegato perché ti serva proprio in C...

sertor185
05-05-2008, 23:36
sto facendo un progetto ma non riesco a fare la funzione iterativa che fa lo shift di 1 posizione!
grazie :oVVoVe:

MItaly
05-05-2008, 23:39
/*Ruota un array di una posizione
array: l'array su cui lavorare
elements: numero di elementi dell'array*/
void ruotaArray(int * array, size_t elements)
{
int temp=array[elements-1];
memmove(array+1,array,elements*sizeof(int));
*array=temp;
}

Non collaudato ma dovrebbe funzionare.

gfabio86
06-05-2008, 01:55
#include<iostream.h>
//funzione
void shift(int *vett, int n)
{
int temp=vett[0];
for(int i=0;i<n-1;i++)
vett[i]=vett[i+1];
vett[n-1]=temp;
}


void main()
{
//inizializzazione
const int n=8;
int v[n];
for (int i=0;i<n;i++)
v[i]=i;
//stampa visione vettore
cout<<"Prima dello shift:\t";
for (int i=0;i<n;i++)
cout<<v[i]<<" ";
//uso la funzione e stampo per verificare lo shift
cout<<"\nDopo lo shift:\t\t";
shift(v,n);
for (int i=0;i<n;i++)
cout<<v[i]<<" ";
//faccio restare in attesa il programma
int i;
cin>>i;
}


Dovrebbe funzionare...anche se e' in c++...bastano piccole modifiche...
se stai imparando ti consiglio di farti le funzioni da te piuttosto di usare funzioni gi belle che pronte...
ciao ciao :ciauz:

MacApp
06-05-2008, 09:06
Originariamente inviato da gfabio86


Dovrebbe funzionare...anche se e' in c++

non includere iostream.h ma iostream;
Restituisci un intero da main:



In file included from /usr/include/c++/4.0.0/backward/iostream.h:31,
from main.cpp:1:
/usr/include/c++/4.0.0/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
main.cpp:12: error: '::main' must return 'int'

gfabio86
06-05-2008, 23:52
con il borland compila e funziona...
poi si sa che ogni compilatore ha le sue finezze^^ :D

XWolverineX
07-05-2008, 15:59
Originariamente inviato da MItaly


/*Ruota un array di una posizione
array: l'array su cui lavorare
elements: numero di elementi dell'array*/
void ruotaArray(int * array, size_t elements)
{
int temp=array[elements-1];
memmove(array+1,array,elements*sizeof(int));
*array=temp;
}

Non collaudato ma dovrebbe funzionare.

Salvi l'ultimo elemento, sposti l'array di una posizione, reinserisci l'ultimo come primo.
Geniale. :)

Loading