Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Xiaomi Pad 8 Pro adotta il potente Snapdragon 8 Elite all'interno di un corpo con spessore di soli 5,75 mm e pannello LCD a 144Hz flicker-free, per un tablet che può essere utilizzato con accessori dedicati di altissima qualità. Fra le caratteristiche esclusive, soprattutto per chi intende usarlo con la tastiera ufficiale, c'è la modalità Workstation di HyperOS 3, che trasforma Android in un sistema operativo con interfaccia a finestre
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-05-2007, 15:34   #1
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Help C parole palindrome

Ragazzi sono nuovo del c e lo devo imparare. oggi mi sono imbattuto in questo esempio che ho rimodellato ad intuito perchè non funzionava... solo che non mi è molto chiaro... l'esercizio è questo:
#include <stdio.h>
#include <string.h>

void main()
{
char s[100];
int i, flag;

i = 0;
scanf ("%s", s);
flag = 1;

while ((i < (strlen(s)/2)) && (flag == 1)) {
if (s[i] != s[strlen(s)-i-1]) {
flag = 0;
}
i++;
}
if (flag == 1) {
printf ("La parola è palindroma.\n");
return main();
} else {
printf ("La parola non è palindroma.\n");
return main();
}

}



non mi è molto chiara questa parte:


scanf ("%s", s);
flag = 1;
while ((i < (strlen(s)/2)) && (flag == 1)) {
if (s[i] != s[strlen(s)-i-1]) {
flag = 0;
}
i++;
}



e soprattutto queste 2 righe di codice:

while ((i < (strlen(s)/2)) && (flag == 1)) {
if (s[i] != s[strlen(s)-i-1]) {



inizia il while e io capisco questo:
mentre i(inizializzato a zero) è minore di parola/2 e flag è = a 1
se la lettera i-esima=lunghezza parola -i-1
flag =0




grazie in anticipèo a tutti
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 15:44   #2
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
flag è un valore che vale 1 se la stringa può essere palindroma, 0 se non lo è.

Il ciclo vuol dire: finchè non arrivi a metà stringa (per controllare che una parola sia palindroma basta controllarne la metà, dal momento che la stringa è simmetrica), confronta i caratteri simmetrici rispetto alla metà (ovvero il primo e l'ultimo, il secondo ed il penultimo...). Se sono diversi allora setta flag=0 (stringa non palindroma) altrimenti la stringa finora è palindroma (flag resta = 1) e prosegui con il controllo del prossimo carattere
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 15:50   #3
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
quindi "-i-1"
è ilo simmetrico di "i+1" rispetto la metà della parola?
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 15:56   #4
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Esatto. Immagina la parola sia: HWUPGRADE (strlen = 9)

Posizione : lettera
i = 0 : lettera H -> strlen-i-1=8 lettera E
-----------------------------------------
i = 1 (W) -> strlen-i-1=7 (D)
-----------------------------------------
i = 2 (U) -> strlen-i-1=6 (A)

e così via
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 16:06   #5
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Grazie mille... ora ti rompo per l'ultima volta( credo )

quel: flag=1; prima del ciclo sarebbe una sorta di if(questo)-> print(questo)
else print(quest'altro)?
se si come mai è scritto così? nn mi pare molto elegante diciamo
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 16:16   #6
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Figurati, non rompi tranquillo
Il flag ti serve per uscire dal ciclo appena ti accorgi che la parola non è palindroma: se al primo giro nel while ti accorgi che la prima lettera e l'ultima non sono uguali, sai già che la parola non è palindroma ed è quindi inutile andare a fare il controllo per il resto dei caratteri. Infatti, se vedi, appena due caratteri simmetrici risultano diversi, il flag viene impostato a 0, la condizione del while fallisce ed esci dal while con flag=0 che è la condizione di stringa non palindroma. Più che come un if, puoi vederlo come una variabile di stato. flag viene impostato a 1 prima che entri nel ciclo perchè ragioni secondo la filosofia "parto con la condizione iniziale che la stringa è palindroma, appena mi accorgo che non lo sia setto flag=0". Se invece tutte le lettere simmetriche sono uguali, flag resta sempre ad 1 prima, durante e dopo l'uscita dal while e quindi la stringa risulta palindroma. Ovvio che il tutto poteva essere scritto in maniera diversa e forse più compatta, ma dal mio punto di vista sono sempre favorevole all'uso di variabili di stato, anche se conviene chiamarle con un nome un attimino più significativo (flag da sè non dice granchè)
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 16:42   #7
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Quote:
Originariamente inviato da yorkeiser Guarda i messaggi
Figurati, non rompi tranquillo
Il flag ti serve per uscire dal ciclo appena ti accorgi che la parola non è palindroma: se al primo giro nel while ti accorgi che la prima lettera e l'ultima non sono uguali, sai già che la parola non è palindroma ed è quindi inutile andare a fare il controllo per il resto dei caratteri. Infatti, se vedi, appena due caratteri simmetrici risultano diversi, il flag viene impostato a 0, la condizione del while fallisce ed esci dal while con flag=0 che è la condizione di stringa non palindroma. Più che come un if, puoi vederlo come una variabile di stato. flag viene impostato a 1 prima che entri nel ciclo perchè ragioni secondo la filosofia "parto con la condizione iniziale che la stringa è palindroma, appena mi accorgo che non lo sia setto flag=0". Se invece tutte le lettere simmetriche sono uguali, flag resta sempre ad 1 prima, durante e dopo l'uscita dal while e quindi la stringa risulta palindroma. Ovvio che il tutto poteva essere scritto in maniera diversa e forse più compatta, ma dal mio punto di vista sono sempre favorevole all'uso di variabili di stato, anche se conviene chiamarle con un nome un attimino più significativo (flag da sè non dice granchè)


Grazie mille

beh allora dico:

O MORDO TUA NUORA O ARO UN AUTODROMO
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2007, 10:55   #8
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Raga riscrivo qui per un esercizio diverso ma faccio solo per nn aprire un nuovo thread....
non iresco a capire come mai mi dia errorre... mi deve dire solo se il numero che metto io è uguale o diverso da quello random del computer:



#include <stdio.h>
#include <stdlib.h>

void main()
{
int a, t, r;

r = rand();
printf("Il numero random è:%d\n",r);
a = -1;
while (a != r) {
printf ("Inserisci un numero: ");
scanf("%d",&a); }

if (a < r)
{
printf ("Inserisci un numero maggiore.\n");
}
else if(a > r)
{
printf ("Inserisci un numero minore.\n");
}



else
{

printf("Il numero che hai digitato corrisponde al numero random");
}





grazie mille
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2007, 15:54   #9
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da Solido Guarda i messaggi
non iresco a capire come mai mi dia errorre... mi deve dire solo se il numero che metto io è uguale o diverso da quello random del computer:



#include <stdio.h>
#include <stdlib.h>

void main()
main deve restituire un int.

E usa il tag CODE, per cortesia.
Quote:
Codice:
{ 
 int a, t, r; 
 
 r = rand(); 
 printf("Il numero random è:%d\n",r);
Il numero random è per caso 1?
Da' un'occhiata a http://www.hwupgrade.it/forum/showthread.php?t=1196677
(sì, lo so, dovrei aggiornarla...)
Quote:
Codice:
 a = -1; 
 while (a != r) { 
  printf ("Inserisci un numero: "); 
  scanf("%d",&a); }
Quando scanf ha finito di leggere il numero, se ne accorge perché legge un carattere newline, che non fa parte della scrittura di un numero.
Questo carattere viene rimesso a posto sullo standard input.
Quindi, la successiva scanf legge solo quel newline, con le conseguenze del caso.

Per ripulire lo standard input dopo la tua scanf,
Codice:
while (getchar() != '\n')
    ;
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2007, 16:12   #10
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Hai semplicemente cannato una graffa:

Codice:
while (a != r) { 
  printf ("Inserisci un numero: "); 
  scanf("%d",&a); 
}  // <--- NON DEVI CHIUDERE IL WHILE QUI
Questa ti va in loop e continui a leggere il numero in input indefinitamente.
Devi semplicemente mettere quella graffa dopo l'else: ti posto la soluzione corretta

Codice:
#include <stdio.h>
#include <stdlib.h>

void main()
{
int a, t, r;

r = rand();
printf("Il numero random è:%d\n",r);
a = -1;
while (a != r) {
printf ("Inserisci un numero: ");
scanf("%d",&a);

if (a < r)
{
printf ("Inserisci un numero maggiore.\n");
}
else if(a > r)
{
printf ("Inserisci un numero minore.\n");
}



else
{

printf("Il numero che hai digitato corrisponde al numero random");
}

}
}
P.S. Se sei alle prime armi, ti consiglio di cominciare a prendere la buona abitudine di indentare il codice, così errori di questo tipo li riconosci al volo. Ciao
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2007, 18:13   #11
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Grazie ad esntrambi ho risolto...
ehm si sono alle prime armi mi potresti dire che vuol dire identare?
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2007, 21:02   #12
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da Solido Guarda i messaggi
che vuol dire identare?
Scrivere il codice di un programma, in modo che le righe corrispondenti a uno stesso blocco di istruzioni, comincino dalla stessa colonna di testo.

Per inciso, l'indentazione è esattamente il metodo con cui si suddividono i blocchi di codice in Python.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2007, 21:08   #13
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Ma phyton non è un linguaggio di programmazione?
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2007, 21:29   #14
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da Solido Guarda i messaggi
Ma phyton non è un linguaggio di programmazione?
Phyton, non lo so; Python, sì, e anche molto valido.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2007, 21:34   #15
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Si vabbeh...cm si scrive si sacrive, cmq che c'entra col C?
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2007, 15:34   #16
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Ragazzi ho trovato qualche esercizio in pdf e melo son fatto... avete ualche link da consigliarmi?
in cui ci siano tanti esercizi con difficoltà appropriata e crescente?
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Ecovacs presenta la gamma 2026: paviment...
Efficienza energetica fino a 2.000 volte...
Lenovo 360: il programma di canale dell'...
Appena 10.000 qubit per rompere la critt...
Analisi dei transistor durante il funzio...
Attacco informatico a Booking.com: espos...
A quattro mesi dal divieto dei social ne...
NVIDIA GeForce RTX 5060 e 5060 Ti: in ar...
Rebellions, Arm e SK Telecom, nuova alle...
Modernizzazione delle app: Red Hat OpenS...
Nel mirino di Google c'è il back ...
PRAGMATA in bundle con GeForce RTX 5000:...
Le novità MOVA per il 2026: robot e impi...
Windows, stop all'attivazione telefonica...
ASUS porta la serie TUF nel formato Mini...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:54.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v