View Full Version : Un aiuto per il c
xbrok3nx7
15-05-2015, 11:20
praticamente dovrei grazie a questa funzione:void surname2code(const char org_surname[],char coded_surname[]) riuscire a generare le prime 3 lettere del codice fiscale a partire da un cognome,questo avverrà però per mezzo dei casi di test con CUnit e non con l'interazione con l'utente.Per genereare queste 3 lettere avevo pensato ad una cosa del genere
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <assert.h>
#include <ctype.h>
#include <(il nome del file.h)>
//le varie librerie mi servono per fare altre cose nel programma,non le ho messe per caso xD
int i;
int total; //(?)
void surname2code(const char org_surname[],char coded_surname[]) {
for(i=0,i<const char org_surname[],i++)
total= const char org_surname[];
Non so se è corretto quello prima,ma arrivato a questo punto non so che fare,penso debba utilizzare l'altro vettore ma non ho idea di cosa fare,potreste darmi una mano?
Daniels118
15-05-2015, 13:51
Da wikipedia:
Vengono prese le consonanti del cognome (o dei cognomi, se ve ne è più di uno) nel loro ordine (primo cognome, di seguito il secondo e così via). Se le consonanti sono insufficienti, si prelevano anche le vocali, sempre nel loro ordine e, comunque, le vocali vengono riportate dopo le consonanti (per esempio: Rosi → RSI). Nel caso in cui un cognome abbia meno di tre lettere, la parte di codice viene completata aggiungendo la lettera X (per esempio: Fo → FOX). Per le donne, viene preso in considerazione il solo cognome da nubile.
Supponendo che total rappresenti il numero di caratteri inseriti in output, devi fare 3 cicli:
1) copia nell'ordine solo le consonanti, interrompe se total==3;
2) partendo dalla posizione successiva a quella raggiunta copia nell'ordine solo le vocali, interrompe se total==3;
3) inserisce ripetutamente "X", interrompe se total==3.
xbrok3nx7
15-05-2015, 13:58
Da wikipedia:
Supponendo che total rappresenti il numero di caratteri inseriti in output, devi fare 3 cicli:
1) copia nell'ordine solo le consonanti, interrompe se total==3;
2) partendo dalla posizione successiva a quella raggiunta copia nell'ordine solo le vocali, interrompe se total==3;
3) inserisce ripetutamente "X", interrompe se total==3.
grazie mille!! :) ora ci provo
xbrok3nx7
15-05-2015, 15:06
ma praticamente dovrei fare 3 while e 2 switch(uno per consonanti e l'altro per vocali)?se si prima di questi devo fare un for oppure no?
Daniels118
15-05-2015, 15:31
Non c'è bisogno del for, i cicli devono essere 3 in totale, i while vanno bene.
Per capire se un carattere è una vocale o una consonante ti conviene scrivere una funzione così il codice risulta più leggibile.
Tieni presente che se un carattere non è una vocale non vuol dire necessariamente che sia una consonante (e viceversa), infatti un cognome può contenere più parole, quindi può capitare anche uno spazio, apostrofi o altro. Inoltre le vocali possono anche avere un accento acuto o grave.
Errata corrige: al punto due, devi partire sempre dalla prima vocale, non dalla posizione precedente, l'esempio su wikipedia è sbagliato.
Edit: ho corretto l'esempio su wikipedia.
xbrok3nx7
15-05-2015, 15:42
Non c'è bisogno del for, i cicli devono essere 3 in totale, i while vanno bene.
Per capire se un carattere è una vocale o una consonante ti conviene scrivere una funzione così il codice risulta più leggibile.
Tieni presente che se un carattere non è una vocale non vuol dire necessariamente che sia una consonante (e viceversa), infatti un cognome può contenere più parole, quindi può capitare anche uno spazio, apostrofi o altro. Inoltre le vocali possono anche avere un accento acuto o grave.
Errata corrige: al punto due, devi partire sempre dalla prima vocale, non dalla posizione precedente, l'esempio su wikipedia è sbagliato.
Edit: ho corretto l'esempio su wikipedia.
capito :),ora vedo come fare
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.