Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-12-2008, 17:20   #1
Composition86
Senior Member
 
L'Avatar di Composition86
 
Iscritto dal: Jul 2005
Messaggi: 406
[C]Programma con procedura non funzionante

Salve a tutti, ho realizzato il seguente semplice programma:
Codice:
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#define DIM 50

typedef struct {
float media;
float deviazionestandard;
int minimo;
int massimo;
} tipoStatistica ;

void init (int mat[DIM][DIM]);
void stampaMatrice (int mat[DIM][DIM]);
void diagonale (int mat[DIM][DIM], int *);
float media (int v[DIM]);
float deviazione (int v[DIM]);
int min (int v[DIM]);
int max (int v[DIM]);
void statisticaDiagonale (int mat[DIM][DIM], tipoStatistica *stat, int *Diag);
void stampaStatistica (tipoStatistica *stat);


int main (void)
{
  int Mat[DIM][DIM], *Diag;
  tipoStatistica Stat;
  char scelta;

  do {
      init (Mat);
      stampaMatrice (Mat);
      statisticaDiagonale (Mat, &Stat, Diag);
      stampaStatistica (&Stat);

      printf ("\nVuoi ripetere il programma? (Digita 'n' per terminare) ");
      scelta=getche();
     } while (tolower(scelta) != 'n');
}

void init (int mat[DIM][DIM])
{
  int i, j, d;
  printf ("Inserire la dimensione della matice quadrata: ");
  scanf ("%d", &d);

  printf ("Digitare dei numeri interi, elementi della matrice,
distribuendoli sulle righe:\n");

  for (i=0 ; i<= d-1 ; i++) {
     for (j=0 ; j<= d-1 ; j++) {
        scanf ("%d", &mat[i][j]);
     }
  }
}

void stampaMatrice (int mat[DIM][DIM])
{
  int i, j, d;

  printf ("Ecco la matrice inizializzata:\n\n");

  for (i=0 ; i<= d-1 ; i++) {
     for (j=0 ; j<= d-1 ; j++) {
        printf ("%d ", mat[i][j]);
     }
     printf ("\n");
  }
}

void diagonale (int mat[DIM][DIM], int *diag) //Il vettore diag è l'output della funzione
{
  int i, d;

  for (i=0 ; i<= d-1 ; i++) {
     diag[d]=mat[i][i];
  }
}

float media (int v[DIM])
{
  int k, d, somma=0, medium;

  for (k=0 ; k<= d-1 ; k++) {
     somma+=v[k];
  }
  medium=somma/d;

  return medium;
}

float deviazione (int v[DIM])
{
  int k, d, somma=0;
  float standardeviation;
  
  for (k=0 ; k<= d-1 ; k++) {
     somma+= pow (v[k] - media(v), 2);
  }

  standardeviation = sqrt (somma/d);

  return standardeviation;
}

int min (int v[DIM])
{
  int k,d, minimum=v[0];

  for (k=0 ; k<= d-1 ; k++) {
     if (v[k] < minimum)
        minimum = v[k];
  }

  return minimum;
}

int max (int v[DIM])
{
  int k,d, maximum=v[0];

  for (k=0 ; k<= d-1 ; k++) {
     if (v[k] < maximum)
        maximum = v[k];
  }

  return maximum;
}

void statisticaDiagonale (int mat[DIM][DIM], tipoStatistica *stat, int *Diag) //stat è una variabile ed è l'output
{
  int k;

  diagonale (mat, Diag);
  stat->media = media(Diag);
  stat->deviazionestandard = deviazione(Diag);
  stat->minimo = min(Diag);
  stat->massimo = max(Diag);
}

void stampaStatistica (tipoStatistica *stat)
{
  printf ("La media degli elementi e': %.2f", stat->media);
  printf ("La deviazione standard e': %.2f", stat->deviazionestandard);
  printf ("L'elemento minimo e': %d", stat->minimo);
  printf ("L'elemento massimo e': %d", stat->massimo);
}
Viene compilato senza dare errori, ma si blocca al momento di eseguire il gruppo di funzioni e procedure correlate alla procedura statisticaDiagonale ().
Dove sbaglio? Ringrazio anticipatamente.
Composition86 è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2008, 20:41   #2
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
In effetti chiami la funzione statisticaDiagonale() dal main() in questo modo

Codice:
  int Mat[DIM][DIM], *Diag;
  tipoStatistica Stat;
...
  statisticaDiagonale (Mat, &Stat, Diag);
Pertanto Diag e' un puntatore a uffeta. E' lui il marrano!
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2008, 21:48   #3
Composition86
Senior Member
 
L'Avatar di Composition86
 
Iscritto dal: Jul 2005
Messaggi: 406
Grazie, appena posso controllo e vedo di far funzionare il tutto.
Composition86 è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2008, 21:08   #4
Composition86
Senior Member
 
L'Avatar di Composition86
 
Iscritto dal: Jul 2005
Messaggi: 406
Ok, ho ricontrollato e c'era anche quell'erorre che hai segnalato. Ho apportato alcune modifiche e funziona tutto, riporto il codice per completezza. Grazie di nuovo.

Codice:
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#define DIM 50

typedef struct {
float media;
float deviazionestandard;
int minimo;
int massimo;
} tipoStatistica ;

void init (int mat[DIM][DIM], int *);
void stampaMatrice (int mat[DIM][DIM], int *);
void diagonale (int mat[DIM][DIM], int *, int *);
float media (int v[DIM], int *);
float deviazione (int v[DIM], int *);
int min (int v[DIM], int *);
int max (int v[DIM], int *);
void statisticaDiagonale (int mat[DIM][DIM], tipoStatistica *stat, int *Diag, int *);
void stampaStatistica (tipoStatistica *stat);


int main (void)
{
  int Mat[DIM][DIM], Diag[DIM], D;
  tipoStatistica Stat;
  char scelta;

  do {
      init (Mat, &D);
      stampaMatrice (Mat, &D);
      statisticaDiagonale (Mat, &Stat, Diag, &D);
      stampaStatistica (&Stat);

      printf ("\nVuoi ripetere il programma? (Digita 'n' per terminare) ");
      scelta=getche();
     } while (tolower(scelta) != 'n');
}

void init (int mat[DIM][DIM], int *d)
{
  int i, j;
  printf ("Inserire la dimensione della matrice quadrata: ");
  scanf ("%d", d);

  printf ("Digitare dei numeri interi, elementi della matrice, distribuendoli sulle righe:\n");

  for (i=0 ; i<= *d-1 ; i++) {
     for (j=0 ; j<= *d-1 ; j++) {
        scanf ("%d", &mat[i][j]);
     }
  }
}

void stampaMatrice (int mat[DIM][DIM], int *d)
{
  int i, j;

  printf ("\nEcco la matrice inizializzata:\n\n");

  for (i=0 ; i<= *d-1 ; i++) {
     for (j=0 ; j<= *d-1 ; j++) {
        printf ("%d ", mat[i][j]);
     }
     
     printf ("\n");
  }
}

void diagonale (int mat[DIM][DIM], int *diag, int *d) //Il vettore diag è l'output della funzione
{
  int i;

  for (i=0 ; i<= *d-1 ; i++) {
     diag[i]=mat[i][i];
  }
}

float media (int v[DIM], int *d)
{
  int k, somma=0;
  float medium;

  for (k=0 ; k<= *d-1 ; k++) {
     somma+=v[k];
  }
  medium = (float) somma/(*d);

  return medium;
}

float deviazione (int v[DIM], int *d)
{
  int k, somma=0;
  float standardeviation;
  
  for (k=0 ; k<= *d-1 ; k++) {
     somma+= pow (v[k] - media(v, d), 2);
  }

  standardeviation = sqrt ((float) somma/(*d) );

  return standardeviation;
}

int min (int v[DIM], int *d)
{
  int k, minimum=v[0];

  for (k=1 ; k<= *d-1 ; k++) { //Inizia da k=1 per risparmiare un ciclo
     if (v[k] < minimum)
        minimum = v[k];
  }

  return minimum;
}

int max (int v[DIM], int *d)
{
  int k, maximum=v[0];

  for (k=1 ; k<= *d-1 ; k++) {
     if (v[k] > maximum)
        maximum = v[k];
  }

  return maximum;
}

void statisticaDiagonale (int mat[DIM][DIM], tipoStatistica *stat, int *diag, int *d) //stat è una variabile ed è l'output
{
  diagonale (mat, diag, d); //Prima viene costruita la diagonale, le funzioni sotto utilizzano il vettore 'diag': è un calcolo intermedio
  stat->media = media(diag, d);
  stat->deviazionestandard = deviazione(diag, d);
  stat->minimo = min(diag, d);
  stat->massimo = max(diag, d);
}

void stampaStatistica (tipoStatistica *stat)
{
  printf ("\nSi ricavano adesso alcune informazioni relative alla DIAGONALE PRINCIPALE della matrice:");
  printf ("\nLa media degli elementi e': %.2f", stat->media);
  printf ("\nLa deviazione standard e': %.2f", stat->deviazionestandard);
  printf ("\nL'elemento minimo e': %d", stat->minimo);
  printf ("\nL'elemento massimo e': %d", stat->massimo);
  printf ("\n");
}
Composition86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
Top 7 tech più venduti su Amazon ...
Stop alle app pesanti: Android 17 Beta 4...
Apple Watch Series 11 e SE 3 crollano su...
Opera Browser Connector: ChatGPT e Claud...
Nuova Opel Astra: maturità elettr...
Il film di Call of Duty ha finalmente un...
Tra nuove mappe e modalità: Battl...
Narwal Flow 2 ufficiale: 31000 Pa di asp...
GPT-Rosalind: OpenAI lancia il suo primo...
Meta aumenta i prezzi dei visori Meta Qu...
Metro 2039 annunciato con un trailer di ...
UMC aumenterà i prezzi dei wafer ...
Intel rafforza la divisione Foundry: arr...
Apple MacBook Pro 16'' M4 Max a 3.499€: ...
Apple ignora la crisi? Gli iPhone 18 Pro...
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: 11:11.


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