Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marathon: arriva il Fortnite hardcore
Marathon: arriva il Fortnite hardcore
Marathon è il titolo multiplayer competitivo del momento. Ecco quali sono le caratteristiche di gioco principali, insieme alle nostre prime considerazioni dopo qualche "run" nell'extraction shooter di Bungie
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
A New York HP ha messo al centro della scena HP IQ, la piattaforma di IA locale da 20 miliardi di parametri. L’abbiamo vista in funzione: è uno strumento che funziona, pensato per un target specifico, con vantaggi reali e limiti altrettanto evidenti
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
La PNY GeForce RTX 5080 Slim OC si distingue nel panorama delle GPU di fascia alta per il design compatto a due slot, ispirato alla NVIDIA GeForce RTX 5080 Founders Edition. In questo test analizziamo comportamento termico e prestazioni in gioco, valutando se il formato ridotto comprometta o meno l'esperienza complessiva rispetto alle soluzioni più ingombranti presenti sul mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-10-2007, 10:43   #1
nongio
Senior Member
 
L'Avatar di nongio
 
Iscritto dal: May 2004
Città: Pianeta Terra
Messaggi: 1593
[C] problema esercizio semplice

Ciao a tutti, ho da fare un esercizio che prende in input un numero di 4 cifre, devo decriptarlo nel seguente modo:

Prendere ogni cifra e modificarla cosi : sommare la cifra a 7 e dividere per 10, utilizzare il resto della divisione come numero cifrato, e scambiare la 4a cifra con la seconda e la 3a con la prima...
io l'ho fatto cosi'

Codice:
#include <stdio.h>

int main ()

{

	int num;
	int cif1;
	int cif2;
	int cif3;
	int cif4;
	int crit1;
	int crit2;
	int crit3;
	int crit4;
	

	printf ("Inserire un numero di 4 cifre:");
	scanf ("%d", &num);
	
	while (num != -1)
		
		{

			cif4 = num/1000;
			cif3 = num/100 - cif4 * 10;
			cif2 = num/10 - cif3 * 10 - cif4 * 100;
			cif1 = num/1 - cif2 * 10 - cif3 * 100 - cif4 * 1000;
			
			crit4 = (cif4 + 7) % 10;
			crit3 = (cif3 + 7) % 10;
			crit2 = (cif2 + 7) % 10;
			crit1 = (cif1 + 7) % 10;
			printf ("%d%d%d%d\n\n", crit2, crit1, crit4, crit3);
		
			printf ("Inserire un numero di 4 cifre:");
			scanf ("%d", &num);
			
		}
			

	return 0;
}
Questo funziona...
Ora devo fare il procedimento inverso...solo che ho dei problemi... non mi funziona come vorrei...
Io l'ho scritto cosi':
Codice:
#include <stdio.h>

int main ()

{

	int num;
	int cif1;
	int cif2;
	int cif3;
	int cif4;
	int crit1;
	int crit2;
	int crit3;
	int crit4;
	

	printf ("Inserire un numero di 4 cifre:");
	scanf ("%d", &num);
	
	while (num != -1)
		
		{

			crit4 = num/1000;
			crit3 = num/100 - cif4 * 10;
			crit2 = num/10 - cif3 * 10 - cif4 * 100;
			crit1 = num/1 - cif2 * 10 - cif3 * 100 - cif4 * 1000;
			
			if (crit4 >= 7)
			{
				cif4 = crit4  -7;
                        }
			else
			{
				cif4 = crit4 + 10 -7;
			}
			if ( crit3 >= 7)
			{
				cif3 = crit3  -7;
			}
			else
			{
				cif3 = crit3 +10 -7;
			}
			if (crit2 >= 7)
			{
				cif2 = crit2 -7;
			}
			else
			{
				cif2 = crit2 +10-7;
			}
			if (crit1 >=7)
			{
				cif1 = crit1 -7;
			}
			else
			{
				cif1 = crit1 +10 -7;
			}
			
			printf ("%d%d%d%d\n\n", cif2, cif1, cif4, cif3);
		
			printf ("Inserire un numero di 4 cifre:");
			scanf ("%d", &num);
			
		}
			

	return 0;
}
vi posto un esempio di quel che succede

Codice:
$ ./crittog
Inserire un numero di 4 cifre:1234
0189

$ ./decripter
Inserire un numero di 4 cifre:0189
203905919711311530503-91076686
non torna 1234!!!!!!!!!!!!!!!!!!!!!
mi aiutate
__________________
|Antec Nine Hundred by me~LC Titan 560W~Asus P5QD Turbo~Intel Q9550~Corsair Dominator xms2-8500~Sapphire HD5870~SB Audigy X-Fi XtremeGamer~Samsung 320Gb sataII~LG dvd-rw~2xAcer P193w + Samsung SM 2243SN~Logitech z-5300~|Notebook MSI S271| Fastweb 20Mb ~ BOINC GOD - 15 UOTD
nongio è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2007, 11:14   #2
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Allora:

- In primo luogo, ti consiglio di studiare gli array; ti risparmieresti un sacco di codice da scrivere. Per scrivere un semplice programmino hai dovuto incollare una pagina di codice, non ti pare un po' troppo?

- L'errore è qui, ed è duplice:
Codice:
crit4 = num/1000;
crit3 = num/100 - cif4 * 10;
crit2 = num/10 - cif3 * 10 - cif4 * 100;
crit1 = num/1 - cif2 * 10 - cif3 * 100 - cif4 * 1000;
1) Il primo è concettuale: hai dichiarato cif1,2,3,4 e li utilizzi nella parte destra di queste espressioni ma NON LI HAI INIZIALIZZATI; mai utilizzare una variabile in c/c++ senza prima averla inizializzata. Ad esempio:
Codice:
 cif1 = cif2 = cif3 = cif4 = 0 ;
2) crit3 deve essere = num/100 - crit3*10, non cif3
Lo stesso vale per crit2 e crit1: devi sempre usare critX, e non cifX nelle espressioni a destra dell'uguale

Impara ad usare gli array!
Ciao
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2007, 15:56   #3
nongio
Senior Member
 
L'Avatar di nongio
 
Iscritto dal: May 2004
Città: Pianeta Terra
Messaggi: 1593
A parte che sono un pirla e tu hai ragione 'errore era banalissimo e non lo trovavo...pensa te..
Non ho utilizzato gli array perche' l'esercizio non richiedeva l'utilizzo di array... cioe' dovevo farlo solo e soltanto con l'if e il while..

grazie mille!
__________________
|Antec Nine Hundred by me~LC Titan 560W~Asus P5QD Turbo~Intel Q9550~Corsair Dominator xms2-8500~Sapphire HD5870~SB Audigy X-Fi XtremeGamer~Samsung 320Gb sataII~LG dvd-rw~2xAcer P193w + Samsung SM 2243SN~Logitech z-5300~|Notebook MSI S271| Fastweb 20Mb ~ BOINC GOD - 15 UOTD
nongio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
Intesa Sanpaolo, multa da 31,8 milioni d...
Stellantis, rinnovo di 5 anni con Palant...
Google Pixel 11 si mostra nei render CAD...
Xbox Games Showcase torna a giugno con u...
OPPO fissa l'evento Find X9 Ultra: tutto...
Apple porta la pubblicità in Maps...
BYD ha licenziato 100.000 persone nel 20...
FRITZ!Box 5690 Pro a 275€ e il nuovo FRI...
I segreti dei 2 nanometri di TSMC rubati...
CMF Buds 2 vs Nothing Ear (a): due auric...
Microonde e friggitrici ad aria con supe...
Amazon Haul: bestseller a -40% acquistan...
C'è ancora spazio per gli iMac: &...
GPU gaming a rischio? Micron oltre l'HBM...
iPhone 18 Pro, cambio di design in arriv...
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: 09:48.


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