Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    63

    [c] funzione ricorsiva che visualizza coppie di numeri

    Ciao a tutti....mi serve aiuto
    Devo creare una funzione ricorsiva che visualizza sottoinsiemi di 2 cifre di un dato numero....
    Cerco di spiegarmi meglio con un esempio
    se ho il num 12345
    la funzione deve restituirmi
    1 2
    1 3
    1 4
    1 5
    2 3
    2 4
    2 5
    3 4
    3 5
    4 5
    confido nel vostro aiuto e vi ringrazio anticipatamente
    ciao

  2. #2
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    bhè...prova un pò tu a scrivere un pò di codice...il forum è un luogo dove chiedere consigli non dove incaricare la gente a fare i programmi!

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    63
    Certo scusami...hai ragione....
    Il problema è che prima di scrivere del codice dovrei risolvere il problema "matematicamente"...è proprio ciò che non riesco a fare....

  4. #4
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Ciao...se il numero inserito ad esempio è 1545, deve visualizzare anche la coppia 5 5 oppure solo cifre diverse?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    63
    Ciao
    deve mostrare anche 5 5...
    grazie per l aiuto

  6. #6
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Comunque ha ragione MrX87...prova a scrivere qualche riga di codice, anche perché il problema si può risolvere in vari modi.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    63
    mi viene subito in mente che la sequenza di numeri deve essere una stringain modo da poter gestire ogni singolo elemento....


    #include <stdio.h>
    #include <stdlib.h>
    int subset (char numero[],int n);
    int main()
    {
    char numero [5];
    int n;
    n=-1;
    printf ("Inserisci una numero di 4 cifre");
    printf ("\nad esempio '1234' --->\n\n");
    scanf ("%s", &numero);
    subset (numero,n);
    system("PAUSE");
    return 0;

    }

    int
    subset(char numero[],int n)
    {
    if (n!=4)
    printf ("%c%c" ,numero[n],numero[n+1]);
    else
    subset(numero, n+1);
    }

    una cosa del genere
    prendete con le pinze cio che ho scritto...
    sicuramente non funge...è solo un inizio

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    117
    Provo a spiegarti a parole mie anche se con la ricorsione non ho ormai più tanta pratica (quindi pure se terminologicamente mi esprimo male non sopprimetemi ). Ad occhio direi che il caso base è quello in cui hai due cifre (ad es. le prime due), per cui l'unica coppia è data proprio da tali due cifre. Nel caso più generale, invece, hai k cifre, e il risultato sarà dato dal risultato dell'esecuzione sulle prime k-1 cifre, più tutte le coppie che si hanno mettendo assieme ciascuna delle prime k-1 cifre con la k-esima.

  9. #9
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    ehilà, ho dato un'occhiata al codice che hai scritto e a qualche ragionamento che è stato scritto, ma comunque dal punto di vista matematico, purtroppo non so aiutarti, mi dispiace, mentre dal punto della programmazione, guardando il tuo programma, dico innanzi tutto perchè usi le stringhe??
    codice:
    char numero [5];
    e poi se proprio vuoi usare le stringhe, almeno usale bene, perchè questo non è del tutto corretto, le stringhe non si leggono così:
    codice:
    scanf ("%s", &numero);
    ma così:
    codice:
    scanf ("%s", numero);
    ovvero senza la & commerciale.
    comunque non sta qua il problema, il fatto sta nella ricorsione, devi cercare un modo per rimanere sul primo elemento e iteri fino alla fine, dopo di chè ricorri sull'elemento successivo, ovvero sul secondo e iteri dal secodo fino alla fine, poi ricorri sul 3 elemento e iteri fino alla fine e così via, fino a quando non arrivi a ricorrere sull'ultimo elemento...spero che un pò mi sia spiegato, comunque se ci sono problemi posta tutto quello che vuoi...ciao

  10. #10
    codice:
    #include <stdio.h>
    #include <string.h>
    
    void subset(char *str, int x)
    {
    	int k;
    
    	if ( x > strlen(str) - 2 )
    		return;
    
    	for(k = x + 1; k < strlen(str); k++)
    		printf("%c %c\n", *(str+x), *(str+k));
    
    	subset(str, ++x);
    }
    
    int main()
    {
    
    	char *str = "12345";
    
    	subset(str, 0);
    
    	return 0;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.