View Full Version : esercizio d'esame -- help
autista2
10-07-2007, 21:12
ciao ragazzi, ho fatto un esame di informatica solo che non sono riuscito a svolgere tale esercizio:
--
si scriva una funzione in linguaggio C in modo che, data una stringa come HAL, la trasformi in IBM, ossia sostituisca a ciascuna lettera della stringa data la sua successiva
--
confido in voi :help:
Andrea16v
10-07-2007, 21:30
Sono un po' arrugginito di C, pero' mi sembra che basti sommare uno alla rappresentazione numerica dei caratteri.. :)
autista2
10-07-2007, 21:55
ho provato a fare un abbozzo ma non funziona
se riuscite, correggetemi dove sbaglio
#include <stdio.h>
char aggiungi(char *s) {
int i;
for(i=0; i<strlen(s); i++){
s[i]=s[i]+1;}
return s;
}
void main() {
char v[]="ciaol";
char pal;
printf("%s", v);
printf("programma per cambiare una stringa data\n\n");
pal=aggiungi(v);
printf("risultato %s", pal);
}
mapomapo
11-07-2007, 00:14
#include <stdio.h>
#include <string.h>
void aggiungi(char *s)
{
int i;
for(i=0; i<strlen(s); i++)
{
switch(s[i])
{
case 'z':{s[i]='a';}break;
case 'Z':{s[i]='A';}break;
default:{s[i]=s[i]+1;}break;
}
}
}
void main()
{
char v[]="zZabcdef";
printf("%s", v);
printf("\nprogramma per cambiare una stringa data\n\n");
aggiungi(v);
printf("risultato %s\n", v);
}
se devi "modificare" una stringa non ha senso fare una funzione che restituisca un char...basta una void che operi sulla stringa di partenza così come hai fatto tu...non resituisce assolutamente niente: hai già modificato la stringa di partenza nella tua funzione!!!!
infatti basta un'altra printf e il prog. funziona.
non sono sicuro della riga
char v[]="abcde";
anche se non mi dà errori il compilatore...
forse è una mia "lacuna" del C, ma non ho mai trovato una dichiarazione simile...avrei fatto il vettore statico oppure una malloc per quello dinamico..
ah, ovviamente la logica del programma è esatta....operi sul codice ascii aggiungendo 1....
puoi solo inserire una sottigliezza in quanto se hai una 'Z' o una 'z' fare il +1 non restituisce la 'A' o la 'a'....prova a vedere cosa succede commentando i primi due case dello switch!!!
Vito
autista2
11-07-2007, 08:02
grazie tante, ottimo lavoro
ora ho capito dove sbagliavo
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.