[C] Matrici

di il
7 risposte

[C] Matrici

Salve, dovrei fare un programma che crei dei cerchi concentrici a partire da una cella random della matrice, vi faccio vedere la consegna:
Una soluzione sarebbe questa:

{
	int i,j;
	int dr=0,dc=0,a=0,b=0;
	a=rand()%MAX_R;
	b=rand()%MAX_C;
	matriceF[a][b]=1;
	for(i=0;i<MAX_R;i++)
		for(j=0;j<MAX_C;j++)
		{
			if(i<a)
				dr=a-i;
			else
				dr=i-a;
			if (j<b)
				dc=b-j;
			else
				dc=j-b;
			if(dr>dc)	
				matriceF[i][j]=dr+1;
			else
				matriceF[i][j]=dc+1;
		}
}
Soltanto che devo trovare un modo alternativo e non riesco proprio ad arrivarci , grazie a tutti

7 Risposte

  • Re: [C] Matrici

    In che sensi "alternativa"?
  • Re: [C] Matrici

    oregon ha scritto:


    In che sensi "alternativa"?
    Che non sia come il codice che ho scritto
  • Re: [C] Matrici

    Basta variare una variabile o cosa? Cambi una for con una while?
  • Re: [C] Matrici

    oregon ha scritto:


    Basta variare una variabile o cosa? Cambi una for con una while?
    No bisogna cambiare tutto il codice, usando un diverso approccio da quello che ho scritto io
  • Re: [C] Matrici

    Mah ... tutto il contenuto del ciclo di potrebbe scrivere con una riga
    
       for(i=0;i<MAX_R;i++)
          for(j=0;j<MAX_C;j++)
    		   matriceF[i][j]=(abs(a-i)>abs(b-j))?abs(a-i)+1:abs(b-j)+1;
    
    ma la questione non cambia molto ...
  • Re: [C] Matrici

    oregon ha scritto:


    Mah ... tutto il contenuto del ciclo di potrebbe scrivere con una riga
    
       for(i=0;i<MAX_R;i++)
          for(j=0;j<MAX_C;j++)
    		   matriceF[i][j]=(abs(a-i)>abs(b-j))?abs(a-i)+1:abs(b-j)+1;
    
    ma la questione non cambia molto ...
    Che cosa sta a significare "abs"? e il punto di domanda? Non sono un esperto di C scusa se ti faccio ste domande
  • Re: [C] Matrici

    Abs è la funzione valore assoluto

    ? e : costituiscono l'operatore ternario. È equivalente ad una if fatta sulla parte sinistra del ? Viene restituito il valore a sinistra dei : se la if è vera, la parte a destra se è falsa
Devi accedere o registrarti per scrivere nel forum
7 risposte