Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] funzione che riconosca sequenza decrescente

    Ciao a tutti, ecco a voi il mio problema:


    codice:
    /*Esercizio 7 : Scrivere una funzione che accetta in ingresso un parametro n.
     La funzione richiede l'inserimento di n numeri interi e restituisce 1 se i numeri
     sono inseriti in ordine decrescente (es.: 1 ¨ 2 ¨ 3¨ 4 ¨ 5 ...) dal primo all'ultimo,
     0 non appena si verifica il caso contrario (es.: 1 ¨ 3 ¨ 4 ¨ 2).*/
    
    #include <stdio.h>
    
    int decr (int);
    
    main()
    
    {
    int n;
    printf("\nQuanti numeri vuoi inserire?: ");
    scanf ("%d",&n);
    
    if (decr(n)==1)
       printf("\n\nI numeri sono inseriti in ordine decrescente.");
       else if(decr(n)==0)
          printf("\n\nI numeri NON sono inseriti in ordine decrescente.");
    
    fflush(stdin);
    getchar();
    }
    
    int decr (int n)
    {
       int a;
       int b;
       int cont;
       printf("\nInserisci un numero: ");
       scanf("%d",&a);
       for(cont=1; cont<=n; cont++)
       {
          printf("\nInserisci un numero: ");
          scanf("%d",&b);
          if (a>=b)
          {
             a=b;
             cont++;
          }
          else return 0;
       }
    return 1;
    }
    non riesco a capire dove sbaglio.. qualcuno riesce ad aiutarmi?? grazie a tutti in anticipo..

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Prima di tutto, non capisco come 1 2 3 4 5 possano essere in ordinde decrescente ... (semmai sono in ordine crescente ...).

    Per il programma, sbagli a chiamare due volte la funzione decr (va chiamata solo nella if ...) e ad incrementare cont (cont++) anche nella if dato che basta l'incremento che c'e' nella for.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    grazie mille oregon, si, era sbagliato il testo, ora lo ho corretto e cmq ho risolto l'esercizio sia grazie ai tuoi accorgimenti che apporando qualche altro piccolo cambiamento e ora funziona alla perfezione.. posto il codice rivisto a volte quacuno ne abbi bisogno:

    codice:
    /*Esercizio 7 : Scrivere una funzione che accetta in ingresso un parametro n.
     La funzione richiede l'inserimento di n numeri interi e restituisce 1 se i numeri
     sono inseriti in ordine decrescente (es.: 5 ¨ 4 ¨ 3¨ 2 ¨ 1 ...) dal primo all'ultimo,
     0 non appena si verifica il caso contrario (es.: 5 ¨ 4 ¨ 3 ¨ 4).*/
    
    #include <stdio.h>
    
    int decr (int);
    
    main()
    
    {
    int n;
    printf("\nQuanti numeri vuoi inserire?: ");
    scanf ("%d",&n);
    
    if (decr(n)==1)
       printf("\n\nI numeri sono inseriti in ordine decrescente.");
       else
          printf("\n\nI numeri NON sono inseriti in ordine decrescente.");
    
    fflush(stdin);
    getchar();
    }
    
    int decr (int n)
    {
       int a;
       int b;
       int cont;
       printf("\nInserisci un numero: ");
       scanf("%d",&a);
       for(cont=1; cont<=n; )
       {
          printf("\nInserisci un numero: ");
          scanf("%d",&b);
          if (a>=b)
          {
             a=b;
             cont++;
          }
          else
          {
          cont=n;
          return 0;
          }
       }
    return 1;
    }
    grazie mille di nuovo, alla prossima

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 © 2024 vBulletin Solutions, Inc. All rights reserved.