Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Nel Formula 1 Technology and Media Centre di Biggin Hill, la velocità delle monoposto si trasforma in dati, immagini e decisioni in tempo reale grazie all’infrastruttura Lenovo che gestisce centinaia di terabyte ogni weekend di gara e collega 820 milioni di spettatori nel mondo
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Abbiamo provato il nuovo HUAWEI Pura 80 Pro. Parliamo di uno smartphone che è un vero capolavoro di fotografia mobile, grazie ad un comparto completo in tutto e per tutto, In questa colorazione ci è piaciuto molto, ma i limiti hardware e software, seppur in netto miglioramento, ci sono ancora. Ma HUAWEI ha fatto davvero passi da gigante per questa nuova serie Pura 80. Buona anche l'autonomia e soprattutto la ricarica rapida sia cablata che wireless, velocissima.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-11-2015, 22:41   #1
Scanca
Junior Member
 
Iscritto dal: May 2013
Messaggi: 12
[C] Divisione Matrice in blocchi

Buonasera, devo dividere una matrice di caratteri in blocchi KxN.
Mi interessa sapere le coordinate che fanno parte del rettangolo, cioè?

A A A A A A
A A A A A A
A A A A A A
A A A A A A
A A A A A A
A A A A A A

se uso blocchi 2x2 dovrei avere le coordinate (0,0) (0,1) (1,0) (1,1); (0,2) (0,3) (1,2) (1,3); ...e così via per tutta la matrice.
C'è un modo per rendere la cosa generica dando una matrice qualsiasi e un rettangolo qualsiasi?

Lo scopo è cambiare tutte le lettere in B tramite i rettangoli e non scorrendo tutta la matrice
Scanca è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2015, 08:57   #2
Scanca
Junior Member
 
Iscritto dal: May 2013
Messaggi: 12
L'esercizio prevede che io con, ad esempio 3 thread devo aggiornare la matrice per blocchi KxN.
Spero di essermi spiegato meglio.
Mi serve una funzione che divide la matrice in blocchi e li passa ai thread per aggiornarli.
Ora provo la tua soluzione e vediamo se riesco

Ultima modifica di Scanca : 05-11-2015 alle 09:30.
Scanca è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2015, 11:38   #3
Scanca
Junior Member
 
Iscritto dal: May 2013
Messaggi: 12
Ho capito, molto gentile
Ma se volessi creare un thread che crea una lista di task e un thread che accede alla lista dei task per aggiornarli come potrei fare?
Ti metto il codice su cui sto lavorando, è una matrice di numeri ma il concetto è lo stesso.
Codice:
/* File: matrici.c */
/* Lettura e stampa di matrici
   Illustra uso di array multidimensionali in C
*/

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


#define RIG 10
#define COL 10

#define K 2
#define N 2

int mat[RIG][COL];

/**struttura coordinata*/
typedef struct coord_t {
  
  int x;
  int y;	
    	
} coord_t;

/**struttura del task*/
typedef struct task_t {
  
  int id;
  struct coord_t* m[K][N];	
  struct task_t* next;
    	
} task_t;

/**struttura lista dei task*/
typedef task_t* lista_t;

lista_t insertList (lista_t l, int id){

	lista_t aux = l;
	task_t* e = NULL;
	coord_t* temp=NULL;
	int i=0,j=0;

	if((e = malloc(sizeof(task_t)))==NULL){
		printf("Errore Malloc\n");
	}
	
	for(i = 0; i < K; i++) {
		for(j = 0; j < N; j++){
			
			if((temp = malloc(sizeof(coord_t)))==NULL){
				printf("Errore Malloc\n");
			}
			e->m[i][j]=temp;
		}
	}
	e->id=id;
	e->next = NULL;

	if(l == NULL){
		l = e;
		return l;	
	}else{
		l = e;
		l->next = aux;
		return l;
	}
}

static void StampaList(lista_t l){
	
	lista_t aux = l;
	int i=0,j=0;
	
	if(l == NULL)
		printf("lista -->\n");
	else
		printf("lista -->");
		while(aux != NULL){
			for(i = 0; i < K; i++) {
				for(j = 0; j < N; j++)
	 				printf("id=%d", aux->id);
			}
			printf(" * ");
			aux = aux->next;
		}
		printf("\n");
}


void stampaM(void){

	int i,j;

	printf("La matrice e':\n");
	for(i = 0; i < RIG; i++) {
		for(j = 0; j < COL; j++)
	 		 printf("%d ", mat[i][j]);
		printf("\n");
	}
}


/** Thread Collector  
 	di aggionamento della matrice che scandisce la lista e aggiorna (mette 1) in base alle coordinate 
 */
static void* worker(void* arg){
	
	
}

/*Funzione che crea la lista dei task già allocata*/
void DividiMatrice(int nBlocchi){

	int i=0,j=0;
	int bc=(COL/N);
	int br=(RIG/K);
	int a=0,b=0;
	int n=1;	
	
	for(i = 0; i < RIG; i++) {
		for(j = 0; j < COL; j++){
	 		
	 		a=i/K;
	 		b=j/N;
			/*Voglio mettere le coordinate giuste nella coda dei task*/
	 		
	 	}		
	}	
}

/** Thread Collector
	crea la lista dei task dalla matrice   
 */
static void* collector(void* arg){
	
	int i=0,j=0;
	lista_t l=NULL;
	lista_t aux=NULL;
  	int n_blocchi=0;
  	
  	n_blocchi=((RIG/2)*(COL/2));
  	printf("n_blocchi=%d\n", n_blocchi);
  	
	while(n_blocchi > 0){
		l=insertList(l,n_blocchi-1);
		n_blocchi--;
	}
	
	DividiMatrice(((RIG/2)*(COL/2)));
	
}

int main(void)
{
		int i, j;
		int k=2,n=2;

		pthread_t w;
		pthread_t c;
		int status;

		/* lettura matrice */
		printf("Lettura matrice %dX%d;\n", RIG, COL);
		for(i = 0; i < RIG; i++)
			for(j = 0; j < COL; j++)
		  		mat[i][j]=0;

		stampaM();
	  
		pthread_create(&w, NULL, &worker, NULL);
		pthread_create(&c, NULL, &collector, NULL);

		pthread_join(c,(void*) &status);
		pthread_join(w,(void*) &status);

				
  return 0;
}
Scanca è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
Sony scopre che tutti i modelli AI hanno...
Amazon nasconde un -15% su 'Seconda Mano...
Due occasioni Apple su Amazon: iPhone 16...
Verso la fine della TV tradizionale? I g...
Cassa JBL a 39€, portatili, smartphone, ...
Cometa interstellare 3I/ATLAS: la sonda ...
Jensen Huang e Bill Dally di NVIDIA prem...
Il futuro della birra è green: H...
ECOVACS GOAT G1-2000: il robot tagliaerb...
Allarme sui bus elettrici cinesi: centin...
iPhone Fold sempre più vicino: fo...
Soundbar Samsung da 150W con subwoofer i...
Tensione tra Nexperia e la controllata c...
Samsung e il futuro della smart cleaning...
Tinder: ecco come userà l'IA (e l...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:48.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v