Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    153

    ascii[C]

    Realizzare un'applicativo che consenta di inserire nome e cognome in un vettore di 30 elementi. Controllando che i valori inseriti siano ammessi (sono ammessi solo lettere e uno spazio per dividere il nome dal cognome).
    Il nome e il cognome inoltre devono incominciare con una lettera maiuscola terminando con un punto. Gestire eventuali errori( es. se si inseriscono dei numeri o delle lettere maiuscole che non sono le iniziali del nome e/o del cognome. Il programma dovra restituire tutti i caratteri maiuscoli.

    Questo e ciò che mi è stato dato. Qualche idea??!!

    codice:
      
    char v[30]; 
    
    char visualizza(); 
    {
         char nominativo;
         int i; 
         scrivi("inserisci il nome con la prima lettera maiuscola e il cognome con la prima lettera maiuscola e separati da uno spazio"); 
         
         for (i=0; i<30; i++) 
         { 
             v[i]=getche(); 
             scrivi("%c" v[i]); 
             } 
             }
             
             
             int controllo (); 
             bool continua; 
             int lungnome,lungcogn; 
             
             if (65 <= v[0] <=90)  
             { 
                    Continua=vero 
              Else 
             { 
    Scrivi (“il nome deve cominciare con  una lettera maiuscola”);  
    
    if 97<v[1] || v[lungnome]<=122 
    { 
    Continua=vero 
    } 
    Else 
      scrivi(“devi inserire lettere maiscuole”); 
    if v[lungnome+1]=32 
    { 
    Continua=vero 
    }
    Else 
    { 
    Printf(“tra il nome e il cognome ci deve essere uno spazio”) 
    }
     If 65 <= v[lungnome+2]<=90 
    { 
    Continua=vero 
    }
     
    Else 
     { 
    Scrivi(“il cognome deve cominciare con una lettera maiuscola”); 
    }
     
    Scrivi(“inserisci la lunghezza del nome”) 
    Leggi (lungnome)
    
    If  97 <=v[lungnome+3] || v[lungnome+lungnome+1]<=122 
    { 
    Continua= vero 
    }
    Else 
    { 
    Scrivi “le altre lettere del cognome devono essere maiuscole”) 
    }
    Questa è una speudocodifica ( manca il main e la procedura che restituisca tutte le lettere minuscole), mi è stato detto che non va bene!! Non ho proprio altre idee!!
    Il programma dovrei farlo in C; ho cercato programmi simili in rete ma non ho trovato niente che mi servisse!!

    Spero di essere stato abbastanza chiaro per avere un grande aiuto dai forumisti di questo forum che hanno cercato sempre di aiutarmi!
    grazie ciao!!!!!



  2. #2
    Puoi fare molto prima usando per bene le funzioni di stringa della libreria string.h e la potente scanf (spesso sottoutilizzata):
    codice:
    #include <stdio.h>
    #include <string.h>
    int isstrlower(char * str);
    int main(int argc, char * argv[])
    {
        char nominativo[31];
        char * spazio;
        char * strpnt;
        char punto[2];
        if(scanf("%30[A-Za-z ]%1[.]", nominativo, punto) != 2)
        {
            printf("Il nominativo non deve contenere simboli e deve terminare con un punto.");
            return 1;
        }
        if(!(spazio = strchr(nominativo, ' ')))
        {
            printf("Nome e cognome devono essere separati da uno spazio.");
            return 2;    
        }
        *spazio = 0;
        if(!isstrlower(nominativo + 1) || !isstrlower(spazio + 2))
        {
            printf("Il nominativo non può contenere più di uno spazio o altre lettere maiuscole oltre alle iniziali di nome e cognome.");
            return 4;
        }    
        if(!isupper(*nominativo) || !isupper(*(spazio + 1)))
        {
            printf("Nome e cognome devono avere la lettera maiuscola.");
            return 3;
        }
        printf("Ok!");
        return 0;
    }
    /* Restituisce 0 se la stringa contiene caratteri diversi da lettere maiuscole */
    int isstrlower(char * str)
    {
        int sl = strlen(str);
        char * sp;
        for(sp = str; sp < str + sl; sp++)
            if(!islower(*sp)) return 0;
        return 1;
    }
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    153
    grazie mille mitaly domani mattina quando sarò più lucido provero!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    153

    Nome e cognome con codice ascii [C]

    Ciao a tutti,
    avevo un piccolo problema con questo programma.
    Il compilatore non mi da errori di sintassi ma una volta scritto il nome e il cognome separati da uno spazio il programma termina; invece di restituire le lettere tutte maiuscole! Qualcuno saprebbe indicarmi il perchè?!

    codice:
    //Avendo un vettore di 30.Introdurre in input nome e cognome (con spazio che divide i due e l'introduzione dei dati deve finere con
    // un punto)le prime lettere del nome e del cognome devono essere scritte in maiuscolo, realizzare un aplicativo che mi 
    // trasformi tutti i caratteri in maiuscolo.//
    
    #include<stdio.h>
    #include<stdlib.h>
    
    char vett[30];
    char nome;
    int i,x,y,n;
     
     void caricamento()
     {
          do{
                       printf("Scrivi nome e cognome.");
                       scanf("%c",vett[i]);
                        if (vett[0]<97)
                        printf("La prima lettera del nome deve essere maiuscola");
                        y=1;
                        if(vett[i]=32)
                        x=i;
                        if(vett[x+1]<97)
                        printf("La prima lettera del cognome deve essere maiuscola");
                        y=1;
                        i++;
                        n++;
          }while(vett[i]!=46 && y!=1);
     }
          void codifica()
          {
               for(i=1;i<x;i++)
               {
                               vett[i]=vett[i]-32;
               }
               for(i=x+3;i<n-1;i++)
               {
                               vett[i]=vett[i]-32;
               }
                               
          }
          void stampa()
          {
               printf("Il nome e il cognome in maiuscolo e': %c",vett[i]);
          }
          int main()
          {
              printf("NOME & COGNOME  \n \n \n");
              caricamento();
              codifica();
              stampa();
              system("PAUSE");
          }
    Grazie del vostro aiuto!!!!!!!!

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Rivedi la funzione caricamento ...

    Qualche indizio ...

    1) La variabile i non e' inizializzata ... ricorda che se non l'hai mai usato, non e' detto che sia uguale a 0 ...

    2) Se scrivi vett[i]=32 non stai facendo un confronto ma un'assegnazione ... il confronto si fa con ==

    3) Controlla i valori degli indici e la funzionalita' delle if all'interno del ciclo ...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    153
    Non saprei come fare senza della gente come te!!!!! grazie Oregon ora me lo vedo!
    "La variabile i non e' inizializzata ... ricorda che se non l'hai mai usato, non e' detto che sia uguale a 0 .." Si imparano sempre cose nuove da voi!!!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    153

    Codice ascii con l'aggiunta della data di nascita

    Ciao a tutti,
    dovrei realizzare un programma che richieda da tastiera 20 caratteri e li memorizzi
    all interno di un vettore e ai valori decimali corrispondenti ai caratteri
    inseriti va aggiunto il valore della propria data di nascita(solo il giorno) e stampi a video i
    carattei risultanti dovrà inoltre richiedere al giocatore il valore che codifica
    la frase;e conti le vocali nella frase inserita.
    Qualche idea?? Dovrei rivoluzionare questo programma (che è pieni di errori ed non è completo)?
    Sapreste inoltre indicarmi qualche programma simile?? Perchè io da questo non so come muovermi.



    codice:
      
     #include<stdio.h>
     #include<stdlib.h>
     #include<conio.h>
    //unsigned char i;\\i valori da 0 a 255
    int i;
    char ch,parola[20];//per mostrare il corrispondente ascii
    i=0
    do
    {
        printf("\n Inserisci la parola di massimo 20 lettere")
        scanf("%c",& parola)
        parola[i]=getch();
        i++;
        conta++;
    }
    while(parola[i-1]>='A' && parola)
    system("pause")
    for (i=0;i<conta;i++)
    {
        printf("\n VALORE Decimale %d" ,i);
        ch=i;
        printf("\n VALORE corrispondente alla tabella ascii %c",ch);   
    }
    system("PAUSE");
    }
    Grazie!!!!!!!!

  8. #8
    Ma non è lo stesso programma di questa discussione? Si poteva andare avanti a parlarne lì...
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9

    solutions

    L'errore sta nello scanf, questa funzione deve prendere l'intero vettore non una parte.

  10. #10
    Più che programma la chiamerei bozza ...
    Vuoi quindi addizionare ai codici ascii un valore da inserire in un vettore di interi ?

    int v[20];
    char stringa [20];
    short int valore;
    [...]
    for (i = 0; i < 20; i++)
    v[i] = stringa[i] + valore;


    EDIT: Per le vocali :
    int vocali = 0;
    for (i = 0; i< 20; i++)
    if (Vocale (stringa[i]))
    vocali++;

    int Vocale (char carattere)
    {
    if (carattere | 0x20 == 'a')
    return 1;
    if (carattere | 0x20 == 'e')
    return 2;
    if (carattere | 0x20 == 'i')
    return 3;
    if (carattere | 0x20 == 'o')
    return 4;
    if (carattere | 0x20 == 'u')
    return 5;
    return 0;
    }
    Experience is what you get when you don’t get what you want

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.