Ordinamento array bidimensionale in C++

Pubblicità

assassins

Utente Attivo
Messaggi
25
Reazioni
0
Punteggio
25
salve raga premetto che sto alle prime acque co ste cose...cmq avrei un problema dovrei ordinare un array bidimensionale per colonne facendolo della stessa dimensione cioe 3x3 mi riesce ma cambia dimensione della riga e della colonna mi perdo un po..potete dare uno sguardo e vedere cosa ho sbagliato nel codice???? magari l'errore è banale ma siccome mi sta dando i nervi sto coso forse non riesco a individuarlo...forse l'errore è quel ciclo for della x???? Io facendomi i calcoli vedo il for e il for b che girano sempre con lo stesso numero pke siccome ho kiuso le parentesi dei for a e b prima e quello della alla fine mi sembra che sto x non incrementa mai cioe girano a vuoto il for a e b....

#include <stdio.h>
#include <stdlib.h>
main(){
int A[2][3],a,b,max=0,w,x,k[3];

for(a=0;a<2;a++){
for(b=0;b<3;b++){
printf("Inserisci numero:");
scanf("%d",&A[a]);
}
}
system("CLS");


for(a=0;a<2;a++){
for(b=0;b<3;b++){
printf("%d\t",A[a]);

}
printf("\n");
}
printf("\n");
for(x=0;x<3;x++){
for(a=0;a<2;a++){
max=0;
for(b=0;b<3;b++){
if(A[x]>max){
max=A[x];
w=b;
}
}
A[w][x]=0;
k[a]=max;
}
b=2;
for(a=0;a<2;a++){
A[a][x]=k;
b--;
}
}
for(a=0;a<2;a++){
for(b=0;b<3;b++){
printf("%d\t",A[a]);

}
printf("\n");
}
system("PAUSE");
}
 
Ultima modifica:
Premessa: dal punto di vista dell' efficienza fa veramente schifo ma almeno funziona:
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


/*costanti della dimensione della matrice*/
#define X 3
#define Y 4


/*matrice di interi*/
int matrix[X][Y];


/*prototipi delle funizoni*/
void initialize();
void print();
void order();


/*compilo la matrice con valori casuali*/
void initialize() {


	int i, j;


	srand(time(NULL));
	for(i = 0; i < X; i++) {
		for(j = 0; j < Y; j++) {
			matrix[i][j] = rand() % 99;
		}
	}
}


/*stampo la matrice*/
void print() {


	int i, j;


	printf("\n\n");
	for(i = 0; i < X; i++) {
		for(j = 0; j < Y; j++) {
			printf("[%d]", matrix[i][j]);
		}
		printf("\n");
	}
	printf("\n\n");
}


void order() {


	int i, j, k = 0, max, temp;
	int tempArray[X*Y];


	/*trasformo la matrice in un array*/
	for(i = 0; i < X; i++) {
		for(j = 0; j < Y; j++) {
			tempArray[k] = matrix[i][j];
			k++;		
		}
	}
	/*stampo l' array così ottenuto*/
	for(i = 0; i < X*Y; i++) printf("[%d]", tempArray[i]);
	printf("\n");


	/*ordino l' array*/
	for(i = 0; i < (X*Y-1); i++) {
		max = tempArray[i];
		for(j = (i+1); j < Y*X; j++) {
			if(tempArray[j] > max) {
				max = tempArray[j];
				temp = j;
			}
		}
		tempArray[temp] = tempArray[i];
		tempArray[i] = max;
	}


	/*stampo l' array ordinato*/
	for(i = 0; i < X*Y; i++) printf("[%d]", tempArray[i]);
	printf("\n");
				
	/*ricompongo la matrice*/
	i = 0; j = 0;
	for(k = 0; k < X*Y; k++) {
		matrix[i][j] = tempArray[k];
		j++;
		if(j >= Y) {
			i++;
			j = 0;
		}
	}		
}


/*inizio programma*/
int main() {


	initialize();
	print();
	order();
	print();


	return 0;
}
 
Pubblicità
Pubblicità
Indietro
Top