C|Array/Numeri casuali multipli di 3

di il
32 risposte

32 Risposte - Pagina 2

  • Re: C|Array/Numeri casuali multipli di 3

    Cominciamo col primo:

    Se MAX vale trenta, perché accetti fino a un massimo di cento valori da generare?
  • Re: C|Array/Numeri casuali multipli di 3

    Grazie, ho corretto;
    continuo però a non capire come è possibile che vengano stampati numeri che non sono presenti nell'intervallo che gli ho dato v = rand() % 100 +1;
  • Re: C|Array/Numeri casuali multipli di 3

    Ma leggi quello che scrivo?

    Se tu ti fossi messo a RI-leggere il tuo programma avresti trovato tu l'errore del 30 non 100

    Ti rendi conto che indirizzare oltre il massimo dimensionato un array in C provoca potenzialmente malfunzionamenti di tutti i tipi?

    Bastava un minimo di buona volontà
    Ma non lo hai cercato

    Pochi messaggi fa ti ho detto che il problema non è quello che generi, ma quello che salvi
    Sei andato a vedere?
  • Re: C|Array/Numeri casuali multipli di 3

    non capire come è possibile che vengano stampati numeri
    Se prepari 30 elementi e ne scrivi 100, alcuni andranno in memoria in posizioni NON gestite dal tuo codice e quindi potranno essere modificate in modo casuale (ecco perché vedi altri numeri) o causare crash.

    a) Ovviamente devi scrivere

    #define MAX 100

    se accetti fino a 100 elementi


    b) Nel primo ciclo for questa linea è sbagliata

    i++;

    perché l'hai inserita?


    c) Togli queste linee

    else {
    printf("\nNon sono stati generati valori multipli di 3");
    }

    dato che è evidentemente sbagliata. Se vuoi determinare la mancanza assoluta di numeri multipli di 3 ragiona in modo un po' diverso.
  • Re: C|Array/Numeri casuali multipli di 3

    perché l'hai inserita?
    Deve esser stato un errore di distrazione, comunque grazie ora funziona bene, ma ho deciso di non stampare nulla in caso non ci siano multipli
    Ma non lo hai cercato
    Scusami non avevo afferrato il concetto.
    Comunque sia questo è il codice finale
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define MAX 100
    
    /*
    Scrivere un programma che carica un vettore con valori interi casuali compresi fra 1 e 100, poi stampa
    solo le componenti del vettore che sono multipli di 3*/
    
    int main() {
    	int i;	/*indice array*/
    	int dim;	/*dimensione effettiva*/
    	int v[MAX]; /*array*/
    	
    	do{
    		printf("Quanti numeri vuoi generare ? (da 1 a 100) : ");
    		scanf("%d", &dim);
    	}while(dim < 1 || dim > 100);
    	srand(time(0));
    	for(i = 0; i < dim; ){
    		v[i] = rand() % 100 +1;	
    		i++;
    	}
    	for(i = 0; i < dim; i++){
    		if(v[i] % 3 == 0){
    			printf("\n%d e' multiplo di 3", v[i]);
    		}	
    	}
    	printf("\n-------------------------LISTA VALORI GENERATI-------------------------");
    	for(i = 0; i < dim; i++){
    		printf("\n%d Valore: %d", i, v[i]);
    	}
    	return 0;
    }
    
    Grazie ancora e perdonate gli errori gravi, alla fine sono qua proprio per imparare.
  • Re: C|Array/Numeri casuali multipli di 3

    Basito...
  • Re: C|Array/Numeri casuali multipli di 3

    alla fine sono qua proprio per imparare.
    Buona giornata
  • Re: C|Array/Numeri casuali multipli di 3

    Ma perché hai tolto i++ dal for e non la linea che ti avevo indicato? Allora non è distrazione... non hai capito.
  • Re: C|Array/Numeri casuali multipli di 3

    L'ho fatto, ma dopo ho notato che non sarebbe cambiato nulla se lo avessi tolto da uno o dall'altro, o forse sbaglio ma il risultato finale era lo stesso
  • Re: C|Array/Numeri casuali multipli di 3

    Non conta il risultato finale ma la scrittura di codice che segua delle regole. La for si scrive in quel modo e la riga in più da togliere è quella finale. Se vuoi imparare segui i consigli.
  • Re: C|Array/Numeri casuali multipli di 3

    Afferrato
  • Re: C|Array/Numeri casuali multipli di 3

    Giusto per onor di cronaca:

    un numero INTERO e' multiplo di 3 SE il RESTO della divisione per 3 E' ZERO

    MA vale anche la regola:

    la somma delle sue cifre DECIMALI e' un multiplo di 3.
    87 -> 8+7=15->5+1=6->3+3.

    E' una vecchia regoletta che si imparava, penso, alle elementari, MOOOOLTO tempo fa.

    Si puo' DIMOSTRARE usando un po' di ragionamento, la scomposizione del numero in POTENZE di 10, e le proprieta' della divisione e del resto per 3.

    Un modo alternativo e' quello di usare l'ARITMETICA MODULARE e relative proprieta'.
  • Re: C|Array/Numeri casuali multipli di 3

    oregon ha scritto:


    Non conta il risultato finale...
    oh no, per alcuni conta solo il risultato finale...

    in effetti per lo OP conta solo aver ottenuto qualcosa, non importa se non ha capito uno Jota di quello che avrebbe dovuto capire, in effetti non ci ha nemmeno provato
    non so se per imperizia o per trollaggine, ma comunque.......

    l'unico vantaggio è che io ho capito come regolarmi in futuro con lui.
  • Re: C|Array/Numeri casuali multipli di 3

    Sicuramente non ha nozioni di base e non si è impegnato (vedi parte che non ha voluto neanche fare). Ma vedremo in seguito...
  • Re: C|Array/Numeri casuali multipli di 3

    Wow. Sappiate che a scaricare critiche alle persone siete bravi. Comunque sia sarei voluto restare sul programma per terminarlo, ma devo svolgerne molti altri, e come avete potuto notare mi portano via un po' di tempo (per mia ignoranza lo so). Ripasserò le basi e sarò più attento ma per favore non ce l'abbiate con me
Devi accedere o registrarti per scrivere nel forum
32 risposte