Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Con la quattordicesima generazione Lenovo ridisegna il suo ThinkPad più iconico attorno al nuovo Space Frame e ai processori Intel Core Ultra Series 3. Resta sotto 1Kg, è molto più semplice da riparare e si rivolge al professionista che lavora in mobilità, con un prezzo da prodotto di vertice.
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Le Jabra Evolve3 85 non sono semplicemente cuffie Bluetooth con cancellazione del rumore. Sono un dispositivo professionale pensato per chi trascorre gran parte della giornata in riunione, al telefono o davanti a un assistente basato sull'intelligenza artificiale
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-11-2006, 22:34   #1
Doriän
Member
 
L'Avatar di Doriän
 
Iscritto dal: Nov 2006
Messaggi: 71
[c++] stringa palindroma

Salve a tutti!
Allora, sono due giorni che peno su un programma sulla carta semplicissimo, ossia controllare se una parola/frase inserita dall'utente sia palindroma o meno. Be', cercato su internet, controllato discussioni vecchie di anni, non sono riuscito a compilare un codice funzionante :|. Va be' che programmo si e no da un mese , ma due giorni...
il codice e' il seguente, se provo a compilarlo (dev c++) il programma mi parte ma al primo ciclo for mi crasha

Codice:
/*Questo programma acquisisce da tastiera una stringa e determina se è palindroma o meno.*/

#include<stdio.h>
#include<stlib.h>
#include<string.h>

main()
{
	int i, j, lenght, flag=0;
	char str1[20];
	
	printf("Inserire la parola o frase (max 20 caratteri, spazi inclusi): ");
	gets(str1);
	
	lenght = strlen(str1);
	
	for(i=0; i<lenght; i++)
		for (j=lenght-1; j>=0; j++)
		{
			if (str1[i] == str1[j])
				flag = 0;
			else if (str1[i] != str1[j])
				flag = 1;
		}
	
	if (flag = 1)
		printf("La stringa non e' palindroma!");
	else if (flag = 0)
		printf("La stringa e' palindroma!");
	
	
	system("PAUSE");
	
}

dove sbaglio? almeno, è possibile fare quello che mi serve in questo modo? chiedo perche' l'idea originale era di copiare il contenuto della prima stringa in una seconda stringa, però al contrario, e poi attraverso lo strcmp vedere se le cose corrispondevano...mi sono bloccato, non riuscendo a fargli copiare la stringa al contrario :|. usavo due cicli for annidati, in teoria dovrebbe essere giusto no?
grazie mille
Doriän è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2006, 22:46   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da Doriän
dove sbaglio?
Non l'ho provato praticamente il tuo codice ma il problema è sicuramente nel ciclo for interno, dove invece di andare verso 0 decrementando j, lo incrementi con j++. Il valore di j va a finire chissà dove e pure l'accesso alla stringa.

Io comunque farei una cosa molto molto più semplice. Una stringa è palindroma se la stringa invertita coincide con la stringa originale.

Quindi farei così:
- Prendo la lunghezza della stringa es. in 'len'.
- Faccio un ciclo for con 'i' da 0 a < len/2.
- Confronto str[i] con str[len-i-1]
- Al primo confronto che fallisce, so già che la stringa non è palindroma
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2006, 23:01   #3
Doriän
Member
 
L'Avatar di Doriän
 
Iscritto dal: Nov 2006
Messaggi: 71
concettualmente quella j doveva decrescere , ho sbagliato a scrivere . Rimane che non funge uguale, "oro" non e' palindromo secondo lui . La soluzione che proponi te l'avevo trovata suggerita anche da qualche altra parte, ma non l'avevo tenuta in considerazione perchè mi piantavo sull'idea che, se in teoria il mio codice funziona, non vedo perchè non deve in pratica comunque ora provo a vedere se riesco a compilare quello che hai suggerito te! gracias!

Ultima modifica di Doriän : 21-11-2006 alle 23:04.
Doriän è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2006, 23:23   #4
Furla
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 1454
l'ho fatto nell'ora di esercitazione all'uni, 20 secondi netti.

Codice:
char flag = 0;
for(int i = 0; i < lenght/2 && !flag; i++)
	if (str1[i] != str1[lenght-i-1])
		flag = 1;
concettualmente il tuo algoritmo è sbagliato, in pratica con i due for annidati confronta tutti i caratteri con tutti i caratteri. restituisce un flag nullo solo se la stringa è composta da caratteri tutti uguali. il for ti crasha per overflow, come ti è stato fatto notare l'indice di quello interno deve decrementare.

l'idea della copia della stringa sarebbe valida, ma poco efficiente.

Ultima modifica di Furla : 21-11-2006 alle 23:46.
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 22-11-2006, 10:42   #5
Doriän
Member
 
L'Avatar di Doriän
 
Iscritto dal: Nov 2006
Messaggi: 71
asd come smontare una persona e vivere felici . bho, grazie mlle per l'aiuto e per i suggerimenti, ora cerco di scrivere un programma che finalmente funzioni!
Doriän è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Meta porta la voce su Muse, e a sponsori...
Perché il disco principale di Win...
Quanta acqua consuma l'IA? Da cinque goc...
Airbnb lancerà un assistente AI per pian...
25 miliardi sul tavolo: i sauditi voglio...
TV Haier QLED da 65'' a meno di 400€ su ...
Il meglio degli sconti Amazon del weeken...
Il rumore degli aerei in sottofondo può ...
Ecco un tapis roulant pieghevole da 14 k...
Roborock Qrevo 2 Pro Set, coupon da 50€ ...
Gemini addestra l'IA con le chat private...
Addio ai floppy disk nei centri di contr...
Crolla il prezzo di Google Pixel 11 da 5...
I satelliti spia russi Kosmos 2613 e Kos...
GTA VI: online la mega galleria con 39 n...
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: 10:55.


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