Programmazione

Pubblicità

assassins

Utente Attivo
Messaggi
25
Reazioni
0
Punteggio
25
salve raga avrei un problema dovrei riordinare una matrice 3*4 il problema e che io sto ragionando da 2 ore su sto problema ma ninete non ci riesco, ho provato a fare l'ordinamento di un array monodimensionale e li ci sono riuscito ma come vado sui monodimensionali non ci riesco qualcuno di voi può aiutarmi????
p.s il linguaggio che uso è il dev c
mica potete darmi un consiglio su come sviluppare un po id piu la logica??? pke altri problemi difficili li so riusciti a fa questo proprio non mi riesce, ah dimenticavo l'ordinamento di questo problema deve avvenire nello stesso array, ah un altra cosa dovrei farlo senza la funzione bubble sort ecc normalmente lo dovrei fare...cmq io ho provato a scrivere qualcosa cioe prima ho caricato l'array poi ho messo oltre a due indici mieie altri due indici sempre con lo stesso nome di array e mi son trovato il massimo salvando gli indici le posizioni ecc ma non mi va potete aiutarmi??? se qualcuno di voi mi puo postare il codice gentilmente
 
Se ho capito bene (...) hai provato ad usare il "Selection Sort" (o almeno una versione di esso) su una matrice 3*4.
Quello che mi chiedo è: in che modo li vuoi ordinare?
Crescente, decrescente, i numeri in successione verticale, orizzontale, a spirale?
 
in ordine crescente lo dovei fare senza l funzioni sort e compagnia bella pke queste funzioni ancora nn le abbiamo fatte lo dovrei fare in modo normale confrontando gli elementi tra di loro e sostituendoli di posto li dovrei far comparire come una matrice normale in modo verticale
 
Ponendo la matrice come matrix1[j] non mi viene in mente nessun algoritmo.. Tuttavia sicuramente non è impossibile crearlo -.-

Io allocherei matrix2[i + j] e al suo interno metterei i valori di matrix1, li ordinerei con il bubblesort (confronto e scambio) dopodiche li riverserei in matrix1.

//Da matrix1 a matrix2 (scambi i numeri e ottieni il passaggio inverso)
for(i = 0; i < 3; i++)
for(j = 0; j < 4; j++)
matrix2[i+j] = matrix1[j];

Non ho provato e non sono affatto sicuro che funzioni a prima prova !
 
Fai così (MOOLTO inefficiente, ma chissene...):


#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

int main() {

int i, j, l; /*varibili per cilci for*/
int matrice[3][4]; /*dichiarazione matrice*/
int ordX, ordY, min; /*variabili per ordinamento*/

srand(time(NULL)); /*riempio la matrice con valori casuali da 0 a 99*/
for(i = 0; i < 3; i++) {
for(j = 0; j < 4; j++) {
matrice[j] = rand() % 99;
}
}
printf("Matrice: \n"); /*stampo la matrice*/
for(i = 0; i < 3; i++) {
for(j = 0; j < 4; j++) {
printf("[%d]", matrice[j]);
}
printf("\n");
}
ordX = 0; ordY = 0; /*azzero le variabili*/
for(l = 0; l < 12; l++) { /*ciclo per i 12 elementi della matrice (3x4)*/
min = matrice[ordX][ordY]; /*assegno il primo valore della matrice a min*/
for(i = 0; i < 3; i++) { /*cicli annidati*/
for(j = 0; j < 4; j++) { /*per scorrere la matrice*/
if(matrice[j] > min) {
min = matrice[j]; /*Se trova un valore più piccolo*/
matrice[j] = matrice[ordX][ordY]; /*scambia min con il valore precedente*/
matrice[ordX][ordY] = min; /*e lo ripone nelle sue coordinate*/
}
}
}
ordX++; /*gestisce le coordinate*/
if(ordX == 2) { /*per il riordino*/
ordX = 0;
ordY++;
}
}
printf("Matrice ordinata: \n"); /*stampo la matrice ordinate*/
for(i = 0; i < 3; i++) {
for(j = 0; j < 4; j++) {
printf("[%d]", matrice[j]);
}
printf("\n");
}

return 0;
}
 
Ultima modifica da un moderatore:
Perchè via mail mi arriva indentato O.o ?
Questo è una specie di selectionsort e credo che lui voleva un matrix_bubble_sort
Figo però
 
grazie Devil 8Ball funziona solo che c'è una piccola imperfezione da qualche parte tipo porta ci sono numeri piu bassi e per esempio mi porta 62,68,80,67 invece di portare 67 prima di 80 lo porta dopo
 
Pubblicità
Pubblicità
Indietro
Top