|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 10
|
[C] Stringhe e vettori
Salve a tutti avrei un piccolo problemino. Dovrei elaborare un programma che prende una stringa in imput la inserisce in un vettore. Fatto questo dovrei prendere in esame le singole parole e attuere il cosiddetto piglatin (dog ->ogda). Essendo stato assente alle lezione non riesco a capire come intervenire sulle singole parole nel vettore ed attuare il piglatin.
Ho messo la stringa nel vettore, calcolo che non superi il limite richiesto, ma non so come modificare le singole parole. Qualcuno un pò più competente (e ci vuole poco ad esserlo ![]() P.S. Ho utilizzato la funzione strlen per contare la dimensione della stringa solo che non mi conta gli spazi. E' giusto o sbaglio qualcosa io? Ultima modifica di Kr0m382 : 14-03-2006 alle 15:17. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
In che linguaggio?
![]() Potrei supporre il "C" visto che parli di strlen.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 10
|
Lol si supponi giusto ho dimenticato di scriverlo
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ok, non so come mai dici che la strlen non ti conta gli spazi. Conta tutti i caratteri presenti nella stringa escludendo il carattere null '\0' che termina la stringa.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 10
|
Ciao guarda il problema della strlen lo guarderò all'ultimo. per adesso mi interessa come intervenire nel vettore sulle singole parole. Avevo pensato di prendere tutti i caratteri nella stringa prima di un blank e copiarli in un altro vettore provvisorio. In questo modo avrei nel secondo vettore ogni parola e potrei applicare i cambiamenti. Purtroppo l'applicazione pratica è da vedersi. Dite chè c'è un modo più semplice?
P.S. Adesso però mi sorge un dubbio..... e se nella frase c'è una virgola? il mio programma non saprebbe cosa fare. Se creassi il secondo vettore inserendo oltre allo spazio anche la punteggiatura risolverei il problema .... in teoria. P.P.S Problema strlen risolto. Nessuno sa come faccio ora a controllare le singole parole nel vettore? Ultima modifica di Kr0m382 : 14-03-2006 alle 16:00. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2005
Città: Gières
Messaggi: 3617
|
proprio oggi il prof al poli ci ha assegnato come esercitazione un programma molto simile a quello che hai citato, se vuoi posso postare l'implementazione che ho abbozzato oggi pomeriggio (il codice è ancora molto rude!!!)
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STR 100 int ruota (char[], char [MAX_STR][MAX_STR]); int main () { int i,j,k; char vet[MAX_STR], ruotato[MAX_STR][MAX_STR]; printf("inserisci una stringa: \n"); scanf("%s", vet); for(k=0;vet[k]!='\0';k++){ ruotato[0][k]=vet[k]; } //eseguo rotazione for(j=1;vet[j]!='\0';j++){ for(i=0;vet[i]!='\0';i++){ ruotato[j][i]=vet[i+1]; } ruotato[j][i-1]=vet[0]; ruotato[j][i]='\0'; //copio il ruotato nel vet di partenza for(k=0;vet[k]!='\0';k++){ vet[k]=ruotato[j][k]; } } for(i=0;vet[i]!='\0';i++){ printf("%s\n", ruotato[i]); } system("PAUSE"); return 0; } non è esattamente quello che hai chiesto, però puoi prenderne spunto!
__________________
Intel i5 4570 - Gigabyte Z87-HD3 - Antec KÜHLER 620 V4 - Corsair/Kingston 16GB DDR3 1600Mhz - KFA2 GTX 1070 EX @ EXOC bios - SanDisk Ultra II 480GB - EVGA 650GQ - Sony KDL-24EX320 - Logitech G502 & G933 - SteelSeries APEX M500 - W10 64bit |
![]() |
![]() |
![]() |
#7 |
Junior Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 10
|
Si grazie mille il programma l'ho completato. In effetti il problema era che stavo creando delle funzioni da solo quando ce ne sono migliaia già fatte. Ho usato strtok() per spezzare la frase. C'era un modo ancora più semplice, ma pazienza la prossima volta che avrò più tempo mi ci dedicherò con calma. Grazie a tutti per gli aiuti, ci sentiamo al prossimo programma
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:23.