Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente bannato
    Registrato dal
    Jul 2001
    Messaggi
    559

    [c] il mio primo programma!!! :P

    intendo programma un po' + serio di scrivere ciao mondo..

    codice:
    #include <stdio.h>
    main()
    {
    double c, nc, nl, nw, ns;
    nl=nw=ns=0;
    /* inserendo un testo non formattato il programma calcola*/
    /*il numero di righe, parole, spazi, caratteri con e senza spazi*/
    for(nc=0;(c=getchar()) != EOF; ++nc)
    {if(c == '\n')
        {
          ++nl;    
          --nc;
        }
      if(c==' ' || c=='\t' || c=='\n')
                ++nw;
          if(c==' ')
              {
                        ++ns;
                        --nc;
              }          
    }
    printf("%.0f caratteri senza spazi\n", nc);
    printf("%.0f linee\n", nl);
    printf("%.0f parole\n", nw);
    printf("%.0f spazi\n", ns);
    printf("%.0f caratteri con spazi\n", nc+ns);
    system ("pause");
    }
    che ne pensate? cosa posso migliorare?

  2. #2
    codice:
      if(c==' ' || c=='\t' || c=='\n')
                ++nw;
    esiste una macro apposita (che è standard! ) definita in ctype.h:

    codice:
      if(isspace(c))
                ++nw;

    perché usi dei valori double? non sono interi?


  3. #3
    Utente bannato
    Registrato dal
    Jul 2001
    Messaggi
    559
    Originariamente inviato da SnakePlissken
    codice:
      if(c==' ' || c=='\t' || c=='\n')
                ++nw;
    esiste una macro apposita (che è standard! ) definita in ctype.h:

    codice:
      if(isspace(c))
                ++nw;

    perché usi dei valori double? non sono interi?

    grazie!!

    una cosa.. ha senso definire una variabile così:" long unsigned int variabile;"

    perchè il compilatore non da errore.... però non so se capisca ciò che intendo.. :P

  4. #4
    accetta pure cose come:

    codice:
    int long unsigned i;
    long int unsigned j;
    e penso che lo capisca. Minchia non me ne ero mai accorto! In ogni caso in ogni linguaggio c'è una sequenza da rispettare (ad esempio: attributo-apposizione-sostantivo). Se senti uno straniero che ti parla in italiano mettendo a caxxo le parti del discorso (forse a volte) lo capisci, però ti fa ridere...

    E' sempre meglio rispettare le convenzioni proprie del linguaggio!


    ps: magari ho detto un sacco di stronzate, perdonatemi... ma mi sono venute e forse così stupide non sono... :bubu:


  5. #5
    Utente bannato
    Registrato dal
    Jul 2001
    Messaggi
    559
    Originariamente inviato da SnakePlissken
    accetta pure cose come:

    codice:
    int long unsigned i;
    long int unsigned j;
    e penso che lo capisca. Minchia non me ne ero mai accorto! In ogni caso in ogni linguaggio c'è una sequenza da rispettare (ad esempio: attributo-apposizione-sostantivo). Se senti uno straniero che ti parla in italiano mettendo a caxxo le parti del discorso (forse a volte) lo capisci, però ti fa ridere...

    E' sempre meglio rispettare le convenzioni proprie del linguaggio!


    ps: magari ho detto un sacco di stronzate, perdonatemi... ma mi sono venute e forse così stupide non sono... :bubu:

    grazie di tutto

  6. #6
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,781
    Originariamente inviato da SnakePlissken
    evito di quotare il tuo messaggio ma ti pregherei di moderare il linguaggio, grazie!
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nè quando nè da dove,
    t'amo direttamente senza problemi nè orgoglio:
    così ti amo perchè non so amare altrimenti

  7. #7
    Utente bannato
    Registrato dal
    Jul 2001
    Messaggi
    559
    cmq mi ha fatto notare un mio amico che se do invio e poi finisco mi dice che ho messo una parola

    bisogna aggiungere questo prima dei printf

    codice:
     
    if (nc==0 && nw>0)
                        nw=0;

  8. #8
    Utente bannato
    Registrato dal
    Jul 2001
    Messaggi
    559
    codice:
    #include <stdio.h> /*libreria standard*/
    main()
    {
    long unsigned int c, nc, nl, nw, ns, ntab;
    nl=nw=ns=ntab=0;
    /* inserendo un testo non formattato il programma calcola*/
    /* il numero di righe, parole, spazi, caratteri con e senza spazi*/
    for(nc=0;(c=getchar()) != EOF; ++nc)
    {if(c == '\n')
        {
          ++nl;    
          --nc;
        }
      if(c==' ' || c=='\t' || c=='\n')
          { if (nc==0)
                nw=0;
            else ++nw;
          }
     
          if(c==' ')
              {
                        ++ns;
                        --nc;
              } 
          
          if(c=='\t')
          {
            ++ntab;
            --nc;   
           }            
    }
    if (nc==0 && nw>0)
                        nw=0;  
    printf("%d caratteri senza spazi\n", nc);
    printf("%d caratteri con spazi\n", nc+ns);
    printf("%d linee\n", nl);
    printf("%d parole\n", nw);
    printf("%d spazi\n", ns);
    printf("%d tabulazioni\n", ntab);
    getchar();
    }
    questa è la versione + giusta.. perchè con tab succedevano casini.

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.