Newsgroup: it.comp.lang.c
Titolo: parametri

Vi sarei a tutti molto grato se potreste togliermi questo dubbio:
è possibile "passare" un array come parametro ad una funzione, oppure è
necessario dichiarare l'array stesso come globale? Il libro Bellini Guidi
cita (se non ho capito male) che bisogna dichiarare gli array come globali,
il K&R invece inserisce tranquillamente i parametri di tipo array come
argomenti delle funzioni.
Qual'è il modo migliore?
Qui sotto c'è un "programma" che non riesco a far funzionare con un array
all'interno di una funzione.
#include<stdio.h>
#define MAX 100
  /*matrice n righe per m colonne*/
void load(int matr[ ] [ ],int n);
main()
{
int matr[MAX][MAX];
int n,m;
/*richiesta grandezza matrice*/
n=1;  /*inizializzazione per far compiere almeno il primo ciclo*/
m=0;
while(n!=m){
do{
  printf("Numero di righe:(1<n<=100) \n");
  scanf("%d",&n);
   }
while(n<1 || n>=MAX);
do{
  printf("Numero di colonne:(1<m<=100) \n");
  scanf("%d",&m);
   }
while(m<1 || m>=MAX);
if(n!=m)
  printf("\nLa matrice deve essere quadrata!\n");
 }
load(matr,n);
}
/*funzione loading, caricamento matrice*/
void load(int matr[ ][ ],int n)
{
int i,j;
for(i=0;i<n;i++)
   for(j=0;j<n;j++){
     printf("\nElemento %d: riga %d: colonna:",i+1,j+1);
     scanf("%d", &matr[ i ][ j ]);    /*il compilatore qui segnala
ERRORE!!!!*/
     }
 }



a quanto ne so io per passare arry automatico a una funz nn ci sono
problemi.... K&R hanno ragione


il problema e` che se passi una matrice bidimensionale a una funzione devi
specificare l'indice piu` a destra (quello delle colonne), in quanto il
compilatore deve sapere la lunghezza di ogni riga per poter accedere
correttamente agli elementi dell'aray (rif. C++ Guida completa, 2a edizione).
Il nuovo programma diventa quindi:
#include<stdio.h>
#define MAX 100
void load(int matr[ ] [MAX],int n);
main()
{
int matr[MAX][MAX];
int n,m;
/*richiesta grandezza matrice*/
n=1;  /*inizializzazione per far compiere almeno il primo ciclo*/
m=0;
while(n!=m){
do{
  printf("Numero di righe:(1<n<=100) \n");
  scanf("%d",&n);
   }
while(n<1 || n>=MAX);
do{
  printf("Numero di colonne:(1<m<=100) \n");
  scanf("%d",&m);
   }
while(m<1 || m>=MAX);
if(n!=m)
  printf("\nLa matrice deve essere quadrata!\n");
 }
load(matr,n);
}
/*funzione loading, caricamento matrice*/
void load(int matr[ ][MAX],int n)
{
int i,j;
for(i=0;i<n;i++)
   for(j=0;j<n;j++){
     printf("\nElemento %d: riga %d: colonna:",i+1,j+1);
     scanf("%d", &matr[ i ][ j ]);    /* il compilatore non segna piu` errore
;)*/
     }
 }


GRAZIE MILLE !!!!!!!!!!!!!!!!!!!!!!!!
Marco

Newsgroup: it.comp.lang.c
Titolo: Triple DES

Qualcuno di voi sa dirmi dove posso trovare l'algoritmo del Triple DES
magari scritto in C o al massimo C++. Mi andrebbe bene anche pseudo
codice.
Grazie.

 codice.
Trovi molte spiegazioni sull'algoritmo DES (cerca Data Encryption
Standard). Il triple des non è altro che un riutilizzo del des:
date due chiavi (K1 e K2) differenti devi prima crittare con K1,
poi decrittare con K2 e infine ricrittare con K1. Per decrittare
basta fare l'inverso: decrittare con K1,crittare con K2,decrittare
ancora con K1.
ciao

 ciao
Ok. Ti ringrazio molto per l'info.
Ciao.