Mesh89
02-12-2006, 14:34
Salve a tutti, sono uno studente d programmazione alla prese con i puntatori
Mi è stato kiesto di ordinare un vettore di interi senza toccarne il contenuto, ma usando un array di supporto con puntatori agli elementi del vettore Interi, e scambiandone gli indirizzi.
Ecco il codice (Dev-C++):
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main() {
srand(time(0));
int Interi[10];
int *PInteri[10];
int *backup;
for (int i=0;i<10;i++) {Interi[i]=rand()%100;PInteri[i]=&Interi[i];cout<<*PInteri[i]<<" ";}
cout<<"\n\nVettore ordinato:\n";
for (int i=0;i<9;i++)
for (int j=0;j<10-(i+1);j++) {
if (Interi[j]>Interi[j+1]) {
backup=PInteri[j];
PInteri[j]=PInteri[j+1];
PInteri[j+1]=backup;
}
}
for (int i=0;i<10;i++) cout<<*PInteri[i]<<" ";
cout<<"\n\nVecchio vettore:\n";
for (int i=0;i<10;i++) cout<<Interi[i]<<" ";
cout<<"\n\n";
system("PAUSE");
}
L'array viene ordinato in modo sbagliato. Eppure Bubblesort è corretto, xkè se nellos cambio invece d scambiare i puntatori scambio direttamente i puntati, funziona correttamente
Cosa ho perso? é.è
Mi è stato kiesto di ordinare un vettore di interi senza toccarne il contenuto, ma usando un array di supporto con puntatori agli elementi del vettore Interi, e scambiandone gli indirizzi.
Ecco il codice (Dev-C++):
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main() {
srand(time(0));
int Interi[10];
int *PInteri[10];
int *backup;
for (int i=0;i<10;i++) {Interi[i]=rand()%100;PInteri[i]=&Interi[i];cout<<*PInteri[i]<<" ";}
cout<<"\n\nVettore ordinato:\n";
for (int i=0;i<9;i++)
for (int j=0;j<10-(i+1);j++) {
if (Interi[j]>Interi[j+1]) {
backup=PInteri[j];
PInteri[j]=PInteri[j+1];
PInteri[j+1]=backup;
}
}
for (int i=0;i<10;i++) cout<<*PInteri[i]<<" ";
cout<<"\n\nVecchio vettore:\n";
for (int i=0;i<10;i++) cout<<Interi[i]<<" ";
cout<<"\n\n";
system("PAUSE");
}
L'array viene ordinato in modo sbagliato. Eppure Bubblesort è corretto, xkè se nellos cambio invece d scambiare i puntatori scambio direttamente i puntati, funziona correttamente
Cosa ho perso? é.è