Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema con riordinamento ciclico
Forum - C/C++ - problema con riordinamento ciclico

Avatar
stella.p (Normal User)
Newbie


Messaggi: 11
Iscritto: 31/10/2009

Segnala al moderatore
Postato alle 15:43
Sabato, 31/10/2009

Codice sorgente - presumibilmente C++

  1. /*Scrivere un programma C++ che acquisisce da tastiera un numero intero
  2. positivo n<=50 e successivamente le componenti reali
  3. u1,u2,....,un
  4. di un vettore u e ne determina un k-riordinamento ciclico delle componenti
  5. (k intero), cioè il vettore v ottenuto da u traslando tutte le componenti di |k|
  6. posti verso destra o sinistra a seconda del segno di k (gli elementi che escono
  7. da un lato rientrano dall'altro); infine il programma deve scrivere il vettore v
  8. sul video*/
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. main()
  13. {
  14. int n,i,k; float u[50],v[50];
  15. printf("\n\ninserisci un numero intero positivo n=");
  16. scanf("%d",&n);
  17. if (n>50) return 0;
  18. for(i=0;i<n;i++)
  19. { printf("\n dammi la componente numero");
  20. printf(" %d del vettore u ",i+1);
  21. scanf("%f",&u[i]); }
  22. printf("\n\nil vettore u ottenuto e':");
  23. for (i=0;i<n;i++)
  24. {printf("\n %f",u[i]);}
  25. printf("\n\ninserisci il valore k:");
  26. scanf("%d",&k);
  27. printf("\n\n il vettore v ottenuto e':");
  28. for (i=0;i<n;i++)
  29. {
  30. if(i+k<n)
  31. printf("\n\n%f",u[i+k]);
  32. else
  33. printf("\n\n%f",u[i+k-n]);
  34. }
  35. system ("PAUSE"); return 0;
  36. }



Alla fine il programma dovrebbe scrivere sul video (come dice la prof.), per esempio:
Se  u=12489
per k=-1  si ha v=24891
per k=+2  si ha v=89124
invece a me esce:
per k=+2 esce v=48912
per k=-1 esce v=01248
Dov'è che il codice è sbagliato?8-|
grazie a tutti coloro che mi aiuteranno..

EDIT by HeDo: Ricordati di racchiudere il codice tra i tag code, così lo rendi più leggibile. Per questa volta l'ho fatto io, ma dalla prossima presta più attenzione.

Ultima modifica effettuata da HeDo il 01/11/2009 alle 13:25
PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 16:48
Sabato, 31/10/2009
il primo errore che vedo è che se i = 0 e k = -1 cerchi di stampare n[-1] che ovviamente non esiste, ecco perchè ti stampa lo zero. :k:

devi modicare quei due if dove decidi che cosa stampare.
e secondo me devi distinguere quando k è positivo o negativo ;)

Ultima modifica effettuata da ingMark il 31/10/2009 alle 16:52


Mamma diceva sempre che stupido è chi lo stupido fa.
PM Quote
Avatar
stella.p (Normal User)
Newbie


Messaggi: 11
Iscritto: 31/10/2009

Segnala al moderatore
Postato alle 19:14
Sabato, 31/10/2009
ciao e grazie per il tuo consiglio.. ma ancora non mi esce:(
non ho capito bene dov'è che devo cambiare il codice..

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 21:55
Sabato, 31/10/2009
Quando posti un codice sorgente, mettilo nei tag code perchè così non si capisce niente


"I have never let my schooling interfere with my education." Mark Twain
PM Quote