Problema Output funzione monotono crescente

di il
41 risposte

41 Risposte - Pagina 2

  • Re: Problema Output funzione monotono crescente

    Parli di cifre ma quelli sono numeri

    1 è una cifra

    123456789 è un numero

    Non esiste una cifra monotona essendo un unico simbolo.

    Quando si spiega è meglio essere precisi e corretti, anzi è necessario.

    Inoltre in C con quel codice l'input avviene in una variabile numerica e non in una stringa (array di char). Nel secondo caso sarebbe semplice ottenere la lunghezza ma altrettantosemplice sarebbe il controllo, nel primo caso sarebbe necessario calcolare il logaritmo in base 10 del valore, magari non facilissimo per l'op. 

    In realtà lui potrebbe risolvere tutto con il primo while ma non ha ancora l'esperienza necessaria. Prima si deve rendere conto dei problemi del suo codice e poi lo migliorerà 

  • Re: Problema Output funzione monotono crescente

    Ho scritto “salvo errori di fretta”

    Ho fatto un altro errore e non lo hai notato… lo correggo.

    Se a-(int(a/10)*10)>a-int(int(a/100)*10)

    A=1234-1230=4

    B= 1234-1200=34

    B=intero di 34/10=3

    Se 4>3 vero altrimenti fine dei giochi.

    ;)

  • Re: Problema Output funzione monotono crescente

    Ho scritto “salvo errori di fretta”

    Ho fatto un altro errore e non lo hai notato… lo correggo.

    Se a-(int(a/10)*10)>a-int(int(a/100)*10)

    A=1234-1230=4

    B= 11234-1200=34

    B=intero di 34/10=3

    Se 4>3 vero altrimenti fine dei giochi.

    ;)

  • Re: Problema Output funzione monotono crescente

    Ecco … a maggior ragione… sarebbe bene evitare risposte che “per la fretta” mettono fuori strada chi ha già le idee poco chiare, no?

    Ripeto, la prima while risolverebbe tutto.

  • Re: Problema Output funzione monotono crescente

    29/04/2023 - oregon ha scritto:


    Parli di cifre ma quelli sono numeri

    1 è una cifra

    123456789 è un numero

    Non esiste una cifra monotona essendo un unico simbolo.

    Quando si spiega è meglio essere precisi e corretti, anzi è necessario.

    Inoltre in C con quel codice l'input avviene in una variabile numerica e non in una stringa (array di char). Nel secondo caso sarebbe semplice ottenere la lunghezza ma altrettantosemplice sarebbe il controllo, nel primo caso sarebbe necessario calcolare il logaritmo in base 10 del valore, magari non facilissimo per l'op. 

    In realtà lui potrebbe risolvere tutto con il primo while ma non ha ancora l'esperienza necessaria. Prima si deve rendere conto dei problemi del suo codice e poi lo migliorerà 

    La premessa l'ho fatta… in c non posso aiutarlo. Magari esiste una funzione già preimpostata ma credo che sia un esercizio per abituarli a riflettere. Un po' come le divisioni senza uso di calcolatrice. ;)

  • Re: Problema Output funzione monotono crescente

    Beh però poi bisogna calare le idee nel linguaggio altrimenti è solo un esercizio teorico.

    Questa è la sezione tecnica del C, non della programmazione teorica e se uno si rivolge a questa sezione si aspetta anche riferimenti concreti al linguaggio.

    Per riassumere per l'OP

    - Il problema del suo codice riguarda le due for, usane una sola

    - in ogni caso il codice è ridondante, basta la prima while dopo una piccola modifica

    - per restituire due informazioni sarebbe necessario un puntatore o una struttura, chiarisci il problema col tuo prof (presumo delle superiori, confrontati anche con altri compagni)

  • Re: Problema Output funzione monotono crescente

    Calare le idee, quindi no codice e pappa pronta.

    Quello che ho fatto. Per questa bazzecola serve un controllo se ci sono i requisiti per andare avanti cioè se il numero è maggiore di due cifre e minore di 9 cifre e che sia intero e minore di 123456790.

    Poi l'esercizio chiede di risolvere senza puntatori, cioè bisogna riflettere, a prescindere dal linguaggio.

    Suppongo che il linguaggio e la sintassi, salvo errori, li conosca. Qui si tratta solo di fargli capire la logica. Un po' come chiedere di misurare un palazzo con il solo uso di un righello. Dubito che un tecnico si presenti in cantiere con solo un righello. Stiamo parlando di aprire la mente, se non riusciamo a risolvere un problemino semplicissimo non possiamo pensare a cose più complesse. Ecco perché ho scritto “questa è matematica”. Ovvio che non intendendomi di musica e suoni non potrei mai creare un programma che legge uno spartito e suoni quanto vi sta scritto. Così come non potrei mai calcolare la rotazione di un mandrino di un tornio se non capisco di taglio dei metalli diametro da lavorare e tipo di utensile impiegato. Forse così è più chiaro. Volevo solo far riflettere che il problema non è nel codice ma nella logica. Se la logica è sbagliata i risultati sono sbagliati. Dice che compila (al netto del copia incolla e posso anche crederci) quindi sul rad non ha errori di sintassi, ma ha risultati errati, ergo ha fatto errori nei calcoli. Se formatto il disco non commetto errori di comandi ma se volevo solo creare una nuova partizione allora sbaglio comando. Non so se riesco a spiegarmi.

  • Re: Problema Output funzione monotono crescente

    D'accordo sul proporre un “metodo” (magari dopo aver controllato che sia corretto e usando i termini giusti (per queste cose banali non si può dire “salvo errori”).

    Ma il metodo dell'op non era sbagliato (semmai ridondante) se non in due punti che gli ho fatto notare. Forse tutto il resto lo confonde.

    Tutto qui. Lascia stare le misure dei palazzi e tutto il resto…

  • Re: Problema Output funzione monotono crescente

    29/04/2023 - oregon ha scritto:


    in ogni caso il codice è ridondante, basta la prima while dopo una piccola modifica

    Concordo

    Qui ammetto la mia stupidità…

    Avevo “furbescamente” pensato di risparmiare tempo usando una while con due return

    Solo che cosi non conta le cifre e quindi ho messo una seconda while solo per contare le cifre…

    Grazie 

  • Re: Problema Output funzione monotono crescente

    29/04/2023 - sihsandrea ha scritto:


    se ci sono i requisiti per andare avanti cioè se il numero è maggiore di due cifre

    Fin dal post 1 sappiamo che numeri di una cifra sono monotoni

    È il caso che rivedi i tuoi requisiti, che sono troppo complessi

  • Re: Problema Output funzione monotono crescente

    29/04/2023 - StandardOil ha scritto:


    29/04/2023 - sihsandrea ha scritto:


    se ci sono i requisiti per andare avanti cioè se il numero è maggiore di due cifre

    Fin dal post 1 sappiamo che numeri di una cifra sono monotoni

    È il caso che rivedi i tuoi requisiti, che sono troppo complessi

    Ho chiesto a mio figlio di 11 anni, ha capito che se a 1 cifra non c'è la condizione per un confronto fra numeri.

    Ma ognuno è libero di scrivere n righe di codice con la gestione delle eccezioni sugli errori trattando il confronto su una sola cifra.

    Ma un commento più costruttivo? In che modo stai aiutando chi chiede aiuto? Certo, di fronte un incidente puoi fare retorica o chiamare i soccorsi, siamo liberi di scegliere.

  • Re: Problema Output funzione monotono crescente

    Io invece ho letto il testo dall'esercizio 

    Molto più… costruttivo che chiedere in giro a caso

    Non serve gestire alcuna eccezione o altro

    Come sto aiutando?

    Ho indicato gli errori

    Ho indicato un algoritmo differente

    Ho corretto il programma originale dello OP e dopo le correzioni necessarie ho verificato che funziona

    Io

    Tu ?

  • Re: Problema Output funzione monotono crescente

    Io mi sono limitato a non offendere nessuno, neanche l'autore. Ho mostrato vie alternative e basta.

    Credevo di essere su “iprogrammatori” non su facebook…

    Buon primo maggio.

  • Re: Problema Output funzione monotono crescente

    Ho chiesto a mio figlio di 11 anni, ha capito che se a 1 cifra non c'è la condizione per un confronto fra numeri

    Tuo figlio avrà detto “confronto tra cifre” … sono cose diverse … “salvo errori”

    In pratica, tornando al codice, la soluzione di dobby è quella che normalmente si scriverebbe anche se, ricordiamo che siamo di fronte a studenti, io non userei la & ma una semplice if

    if (n1 <= n2) flag=0; 
  • Re: Problema Output funzione monotono crescente

    Purtroppo la soluzione di dobby è sbagliata

    Non confronta le cifre a coppie, ma estrae coppie di cifre e le confronta

    C'è differenza

    Adesso pappa…

Devi accedere o registrarti per scrivere nel forum
41 risposte