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
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
Se non conosci il C perché vuoi farlo proprio in questo linguaggio?
"Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."
mi serviva in c VVoVe:
Sì, questo l'hai detto anche nel primo messaggio, però non hai spiegato perché ti serva proprio in C...mi serviva in c
"Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."
sto facendo un progetto ma non riesco a fare la funzione iterativa che fa lo shift di 1 posizione!
grazie VVoVe:
Non collaudato ma dovrebbe funzionare.codice:/*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; }
Amaro C++, il gusto pieno dell'undefined behavior.
Dovrebbe funzionare...anche se e' in c++...bastano piccole modifiche...codice:#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; }
se stai imparando ti consiglio di farti le funzioni da te piuttosto di usare funzioni gi belle che pronte...
ciao ciao
Originariamente inviato da gfabio86
Dovrebbe funzionare...anche se e' in c++
- non includere iostream.h ma iostream;
- Restituisci un intero da main:
codice: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'
con il borland compila e funziona...
poi si sa che ogni compilatore ha le sue finezze^^
Salvi l'ultimo elemento, sposti l'array di una posizione, reinserisci l'ultimo come primo.Originariamente inviato da MItaly
Non collaudato ma dovrebbe funzionare.codice:/*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; }
Geniale.
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog