[RISOLTO]rapprentazione matrice bidimensionale[c]

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
luca_1
Prode Principiante
Messaggi: 4
Iscrizione: mercoledì 8 maggio 2013, 15:37
Distribuzione: 10.04.4 lts lucid

[RISOLTO]rapprentazione matrice bidimensionale[c]

Messaggio da luca_1 »

salve a tutti vorrei chiedervi una mano per piacere nella risoluzione di un problema legato alle matrici .
il problema è il seguente dato un qualunque numero immesso dall'utente ,
come posso creare una matrice bidimensionali che rappresenti tale numero e che poi in seguito stampi tutte le sue coordinate?
faccio un' esempio dato il numero 4 la matrice sarà 2*2 e stamperà poi 1.1,1.2,2.1,2.2.
ma se il numero per esempio è 13 come potrei procedere?
la mia difficoltà è appunto che mi sono costretto a usare una array bidimensionale.
allego qui il mio codice

Codice: Seleziona tutto



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


int main()
{


    int p;

   scanf ("%d",&p );


   int i, k;

int n;



 int matrice_1[1][p]; /// qui il problema mi ritrovo costretto a mettere come righe sempre 1  
                           

n = 0;



    for (i=0;i<1;i++)///righe

    {
        for (k = 0; k<p; k++)///colonne
        {


         matrice_1[i][k]=k;

         printf("[%d-%d]\t",matrice_1[0][i],matrice_1[0][k]);    /// di conseguenza se viene inserito un numero come  13 avrò la cordinata 0-13 perché come //numero di righe ho inserito 1 qua il problema*
                                                                                                      
                                         

        }

    }






    return 0;
}










grazie a tutti in anticipo:)
Ultima modifica di luca_1 il mercoledì 8 maggio 2013, 21:38, modificato 1 volta in totale.
Avatar utente
rpadovani
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3434
Iscrizione: lunedì 8 dicembre 2008, 19:49
Desktop: GNOME Shell
Distribuzione: Ubuntu 18.04 x86_64
Sesso: Maschile
Località: Munich, Germany
Contatti:

Re: rapprentazione matrice bidimensionale[c]

Messaggio da rpadovani »

Non credo di aver capito il problema, lasciando stare la sua implementazione.
Cosa significa rappresentare un numero come matrice? Se intendi, dato un numero, rappresentare una matrice con un numero di righe e di colonne che siano divisori del numero stesso, nel caso di numeri primi per forza di cose avrai o una riga o una colonna.
Ti faccio un po' di esempi:
1 = 1x1
2 (primo) = 2x1 v 1x2
3 (primo) = 3x1 v 1x3
4 = 4x1 v 2x2 v 1x4
6 = 6x1 v 3x2 v 2x3 v 1x6

Secondo me dovresti ripensare bene a quello che vuoi fare, e poi farlo in maniera diversa!
Solutions Architect at nextbit | About me
Changing the world bit by bit
melfnt
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1312
Iscrizione: sabato 15 ottobre 2011, 22:25

Re: rapprentazione matrice bidimensionale[c]

Messaggio da melfnt »

Se il numero è per forza un quadrato perfetto allora basta che estrai la radice...
1= 1x1
4= 2x2
9=3x3

e così via...
Per ovviare al fatto che all'inizio non conosci la dimensione della matrice puoi fare in due modi:
usi puntatori e malloc
oppure fai una matrice più grossa (per esempio 1000x1000) e la usi solo in parte.
luca_1
Prode Principiante
Messaggi: 4
Iscrizione: mercoledì 8 maggio 2013, 15:37
Distribuzione: 10.04.4 lts lucid

Re: rapprentazione matrice bidimensionale[c]

Messaggio da luca_1 »

si WebbyIT intendevo che dato un numero qualunque io lo rappresento tramite righe e colonne, hai ragione ma è il fatto che ho questo vincolo cioè quello di usare una matrice bidimensionale, senò avrei gia ovviato al problema..

melfnt grande l'idea di usare l'allocazione dinamica ma come faccio fargli capire quando deve allocare dinamicamente e quando no?
nel senso:
se la radice mi da un risultato con la virola virgola -> allora alloco
e in caso contrario no?
non mi è chiara la condizione da usare .
faccio un' esempio se in imput è 4 faccio la radice e creo la mia array 2*2

ma se è se 5 che condizione uso per dirgli di fare un'array 1*5?

grazie per il vostro tempo.
Avatar utente
rpadovani
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3434
Iscrizione: lunedì 8 dicembre 2008, 19:49
Desktop: GNOME Shell
Distribuzione: Ubuntu 18.04 x86_64
Sesso: Maschile
Località: Munich, Germany
Contatti:

Re: rapprentazione matrice bidimensionale[c]

Messaggio da rpadovani »

Non serve fare una malloc.
Prendi in input il numero, guardi se è primo (scrivi una funzione apposita), se è primo allochi una matrice 1xn, altrimenti controlli se è un quadrato, ed allochi un nxn, e se nessuna delle due condizioni è verificata trovi due divisori...
Solutions Architect at nextbit | About me
Changing the world bit by bit
luca_1
Prode Principiante
Messaggi: 4
Iscrizione: mercoledì 8 maggio 2013, 15:37
Distribuzione: 10.04.4 lts lucid

Re: rapprentazione matrice bidimensionale[c]

Messaggio da luca_1 »

perfetto, ma per trovare i due divisori intendi che provo a dividerlo tante volte finché non trovo due divisori ovvero due numeri che mi diano modulo 0?e che poi moltiplicati mi diano il numero stesso.
melfnt
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1312
Iscrizione: sabato 15 ottobre 2011, 22:25

Re: rapprentazione matrice bidimensionale[c]

Messaggio da melfnt »

In realtà una volta che hai trovato il primo trovi anche il secondo...
Tipo se l'input è 8, e tu trovi subito 2 come divisore, hai anche l'altro (4=8/2)
;)

@WebbyIT, forse la matrice la deve fare per esercizio o per un altro scopo, altrimenti non serve: basta stampare a video i due divisori.
luca_1
Prode Principiante
Messaggi: 4
Iscrizione: mercoledì 8 maggio 2013, 15:37
Distribuzione: 10.04.4 lts lucid

Re: rapprentazione matrice bidimensionale[c]

Messaggio da luca_1 »

eh si ho l'obbligo di usare la matrice :cry: ! vi ringrazio per il vostro aiuto è stato davvero utile e mi ha aiutato a risolvere il problema. seguirò sole i primi due casi ovvero vedo se è primo se lo è con allocazione dinamica faccio la matrice( 1* numero) sennò con la radice quadrata procedo con inizializzare la matrice.

tralascio la fattorizzazione che per me è troppo e nonmi sento di fare :shy:

grazie :)
melfnt
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1312
Iscrizione: sabato 15 ottobre 2011, 22:25

Re: [RISOLTO]rapprentazione matrice bidimensionale[c]

Messaggio da melfnt »

Prego.

Questo codice scompone un numero in fattori primi e li visualizza, vedi se riesci ad adattarlo alle tue necessità.

Codice: Seleziona tutto

        int n=2354768;
	int f=2;
	if (n==1)
	{
		printf("1\n");
	}
	while (n>1)
	{
		while (n%f != 0)
		{
			f++;
		}
		n=n/f;
		printf("%d\n",f);
	}
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti