Torna indietro   Hardware Upgrade Forum > Software > Programmazione

realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
Star Wars Zero Company è l'erede di XCOM 2
Star Wars Zero Company è l'erede di XCOM 2
Bit Reactor porta nell’universo di Star Wars una struttura tattica che richiama apertamente XCOM 2, ma la arricchisce con legami tra i personaggi, progressione ruolistica, gestione della base e un sistema di combattimento costruito attorno a tre Punti Azione e alle risorse condivise della squadra
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-06-2006, 16:09   #1
Satiel
Senior Member
 
Iscritto dal: Jun 2004
Città: Reggio Emilia
Messaggi: 592
[C] Acquisizione Array alternato

Ciao a tutti, vi chiedo ancora una volta il vostro aiuto per un programma in C.
Ecco cosa dovrebbe fare:

Acquisire i dati da tastiera e immetterli in un Array, questi numeri però devono essere alternativamente divisibili per 3
*Esempio*

10
5 nn viene considerato
4 nn viene considerato
6
11
16 nn viene considerato
18
ecc...

Ecco il mio codice









Quote:


#include <stdio.h>
#include <stdlib.h>
#define N1 6
#define T 20

int main(int argc, char *argv[])
{

int V1[N1];
float prova;
int I;
float Q1;
int Q2;


printf("Inserire i numeri-> ");
for(I=0;I<N1;I++){
if(I%2==0){ //controlla se l'indice è pari
do{ //entra nel ciclo per controllo /3
scanf("%d",&prova);
Q1=V1[i]/3;
Q2=Q1;
V1[i]=prova;}
while(Q2*3==prova);} //se il numero è /3 esce dal ciclo
if(I%2==1) //controlla se l'indice è dispari

scanf("%d",&V1[i]); //immette semplicemente il numero
}

/*Visualizza il vettore per vedere se lo ha preso bene*/

for(I=0;I<N1;I++)
printf("\n %d",V1[i]);







system("PAUSE");
return 0;
}



Il problema è che non rimane dentro al ciclo se il numero nn è divisibile per 3, ma mette uno zero e prosegue.
Sono sicuro al 99,9% che il controllo della divisione sia giusto perchè a parte avevo sviluppato un programmino che faceva solo questo, ve lo posto così potete verificare anche voi


Quote:

#include <stdio.h>
#include <stdlib.h>
#define B 3
int main(int argc, char *argv[])
{

float A;
float C1;
int C2;
int I;



printf("\n\nInserire il numero "); // Inserisce il numero
scanf("%f",&A);
C1=A/3; // Fa la divisione
C2=C1; // Converte il float in int eliminando le virgole
if(C2*3==A) // Se il numero intero è uguale al numero che ho immesso allora anche il risutato era intero
printf(" %f e' divisibile\n\n",A);
else
printf(" %f non e' divisibile\n\n",A);




system("PAUSE");
return 0;
}



Ringrazio in anticipo chiunque sappia aiutarmi
__________________
Case: CM-690, ALI:Enermax Modu82+ 525W, Procio: Intel E8400, MB: Asus P5Q-E, RAM: TeamGroup TXDD2048M800HC4, HD:VelociRaptor WD3000GLFS, VGA:Sapphire Ati HD4870, SchedaAudio: Creative Xtreme Gamer, Dissipatore ThermalTake Big Typhoon con Noctua NF-P12, Monitor: Samsung T220, Tastiera Zboard, mouse Razer Lachesis con Goliatus speed edition
Satiel è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 16:23   #2
Andlea
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 357
Sarò criptico
Codice:
if(a%b==0)
printf("Il numero a è divisibile per b");
Non serve dividere e poi controllare la moltiplicazione del quoziente per il divisore
Andlea è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 16:25   #3
Satiel
Senior Member
 
Iscritto dal: Jun 2004
Città: Reggio Emilia
Messaggi: 592
Ok grazie ma sono sicuro che il problema era nel fatto che non rimaneva nel cliclo while...
__________________
Case: CM-690, ALI:Enermax Modu82+ 525W, Procio: Intel E8400, MB: Asus P5Q-E, RAM: TeamGroup TXDD2048M800HC4, HD:VelociRaptor WD3000GLFS, VGA:Sapphire Ati HD4870, SchedaAudio: Creative Xtreme Gamer, Dissipatore ThermalTake Big Typhoon con Noctua NF-P12, Monitor: Samsung T220, Tastiera Zboard, mouse Razer Lachesis con Goliatus speed edition
Satiel è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 16:34   #4
Andlea
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 357
per forza

Codice:
do{ //entra nel ciclo per controllo /3 
scanf("%d",&prova); 
Q1=V1[i]/3;
Acquisisci prova, poi assegni a Q1 il valore di V1[i] che non è stato ancora definito
Codice:
Q2=Q1; 
V1[i]=prova;}
Assegni a Q2 il valore di Q1, quindi il numero non definito diviso 3, solo poi assegni a prova[i] un valore.
[/code]
while(Q2*3==prova);} //se il numero è /3 esce dal ciclo[/code]
Quindi questo test non sarà mai vero


il codice "corretto" è questo
Codice:
for(I=0;I<N1;I++){ 
if(I%2==0){
do
scanf("%d",&V[i]);
while(V[i]%3==0);
}else
scanf("%d",&V1[i]);

Ultima modifica di Andlea : 29-06-2006 alle 16:37.
Andlea è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 16:51   #5
Satiel
Senior Member
 
Iscritto dal: Jun 2004
Città: Reggio Emilia
Messaggi: 592
Mille grazie
__________________
Case: CM-690, ALI:Enermax Modu82+ 525W, Procio: Intel E8400, MB: Asus P5Q-E, RAM: TeamGroup TXDD2048M800HC4, HD:VelociRaptor WD3000GLFS, VGA:Sapphire Ati HD4870, SchedaAudio: Creative Xtreme Gamer, Dissipatore ThermalTake Big Typhoon con Noctua NF-P12, Monitor: Samsung T220, Tastiera Zboard, mouse Razer Lachesis con Goliatus speed edition
Satiel è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 16:56   #6
Satiel
Senior Member
 
Iscritto dal: Jun 2004
Città: Reggio Emilia
Messaggi: 592
Niente da fare, non resta nel ciclo
Ecco la modifica

Quote:

#include <stdio.h>
#include <stdlib.h>
#define N1 6
#define T 20

int main(int argc, char *argv[])
{

int V1[N1];
float prova;
int I;
float Q1;
int Q2;


printf("Inserire i numeri-> ");
for(I=0;I<N1;I++){
if(I%2==0){
do
scanf("%d",&V1[i]);
while(V1[i]%3==0);
}
else
scanf("%d",&V1[i]); //immette semplicemente il numero
}

/*Visualizza il vettore per vedere se lo ha preso bene*/

for(I=0;I<N1;I++)
printf("\n %d",V1[i]);







system("PAUSE");
return 0;
}

__________________
Case: CM-690, ALI:Enermax Modu82+ 525W, Procio: Intel E8400, MB: Asus P5Q-E, RAM: TeamGroup TXDD2048M800HC4, HD:VelociRaptor WD3000GLFS, VGA:Sapphire Ati HD4870, SchedaAudio: Creative Xtreme Gamer, Dissipatore ThermalTake Big Typhoon con Noctua NF-P12, Monitor: Samsung T220, Tastiera Zboard, mouse Razer Lachesis con Goliatus speed edition
Satiel è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 17:11   #7
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
aspè che guardo e ti posto il codice.

EDIT:

allora il seguente codice prende valori alternati partendo dal primo che deve essere mod3. Se lo vuoi al contrario basta che metti ! sull'if del valore booleano.

Codice:
#include "stdafx.h"

#define N1 6
#define T 20

int main(int argc, char *argv[]){
	/* array dei dati che contengono alternativamente valori mod3 l'altro no */
	int arrayValori[N1];
	/* variabile booleana per acquisire valori alternati */
	bool valoreDaInserire = true;
	/* variabile di appoggio per acquisizione dei valori da tastiera */
	int valSup;
	/* variabile per sapere il numero di elementi inseriti */
	int i=0;
	/* acquisizione dei dati */
	while (i<N1){
		scanf ("%d", &valSup);
		if (valoreDaInserire){
			if (valSup%3 == 0) {
				/* inseriamo il valore nell'array */
				arrayValori[i] = valSup;
				/* incrementiamo il numero di elementi */
				i++;
				/* abilitiamo che il prossimo valore non deve essere mod3 */
				valoreDaInserire = false;
			}
			else printf ("Devi inserire un valore mod3.\n");
		}
		else {
			if (valSup%3 == 0){
				printf ("Devi inserire un valore non mod3.\n");
			}
			else{
				/* inseriamo l'elemento nell'array */
				arrayValori[i] = valSup;
				/* incrementiamo il numero di elementi */
				i++;
				/* abilitiamo che il prossimo numero deve essere divisibile per 3 */
				valoreDaInserire = true;
			}
		}
	}

	/* visualizziamo l'array */
	for (i=0;i<N1;i++) printf ("Valore: %d.\n", arrayValori[i]);



	return 0;
}
se lo vuoi diverso cioè che puoi partire da qualsiasi valore allora va leggermente modificato.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso

Ultima modifica di Fenomeno85 : 29-06-2006 alle 17:35.
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 18:05   #8
Andlea
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 357
Quote:
Originariamente inviato da Satiel
Niente da fare, non resta nel ciclo
Ecco la modifica
while(V[i]%3!=0)
pardòn
Andlea è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 19:10   #9
Satiel
Senior Member
 
Iscritto dal: Jun 2004
Città: Reggio Emilia
Messaggi: 592
Quote:
Originariamente inviato da Fenomeno85
aspè che guardo e ti posto il codice.

EDIT:

allora il seguente codice prende valori alternati partendo dal primo che deve essere mod3. Se lo vuoi al contrario basta che metti ! sull'if del valore booleano.



se lo vuoi diverso cioè che puoi partire da qualsiasi valore allora va leggermente modificato.

~§~ Sempre E Solo Lei ~§~
Hey è una bella soluzione anche se l'esame di Fondamenti di Informatica non prevede di usare variabili booleane e librerie aggiuntive e strane funzioni, purtroppo devo prendere la strada più scomoda usando le funzioni di base
__________________
Case: CM-690, ALI:Enermax Modu82+ 525W, Procio: Intel E8400, MB: Asus P5Q-E, RAM: TeamGroup TXDD2048M800HC4, HD:VelociRaptor WD3000GLFS, VGA:Sapphire Ati HD4870, SchedaAudio: Creative Xtreme Gamer, Dissipatore ThermalTake Big Typhoon con Noctua NF-P12, Monitor: Samsung T220, Tastiera Zboard, mouse Razer Lachesis con Goliatus speed edition
Satiel è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 19:11   #10
Satiel
Senior Member
 
Iscritto dal: Jun 2004
Città: Reggio Emilia
Messaggi: 592
Quote:
Originariamente inviato da Andlea
while(V[i]%3!=0)
pardòn
grazie ora provo
__________________
Case: CM-690, ALI:Enermax Modu82+ 525W, Procio: Intel E8400, MB: Asus P5Q-E, RAM: TeamGroup TXDD2048M800HC4, HD:VelociRaptor WD3000GLFS, VGA:Sapphire Ati HD4870, SchedaAudio: Creative Xtreme Gamer, Dissipatore ThermalTake Big Typhoon con Noctua NF-P12, Monitor: Samsung T220, Tastiera Zboard, mouse Razer Lachesis con Goliatus speed edition
Satiel è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 18:13   #11
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
Quote:
Originariamente inviato da Satiel
Hey è una bella soluzione anche se l'esame di Fondamenti di Informatica non prevede di usare variabili booleane e librerie aggiuntive e strane funzioni, purtroppo devo prendere la strada più scomoda usando le funzioni di base
allora la libreria strana altro non è che un file h dove sono contenute tutte le librerie che ti servono .. è perchè sto usando un progetto di vc.

Per la variabile booleana o te la crei te oppure usi semplicemente un intero.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Data repatriation: cos'è e come S...
ProsperoEden: l'emulatore funzionante ch...
La sonda spaziale ESA JUICE ha effettuat...
iPhone, crash a valanga su migliaia di a...
Se mangi queste patatine puoi vincere un...
Opera browser ha una eSIM integrata da 3...
WINDTRE BUSINESS e la Protezione Civile ...
Intel prepara i chip che si illuminano? ...
HUAWEI WATCH D3 arriva in Italia: l'orol...
PS5 Pro, in Giappone si compra per estra...
Recensione Nothing Headphone (1) Pro, de...
Oltre 16 mila database Supabase leggibil...
Galaxy Z Fold8 e Fold8 Ultra ai vertici ...
Teams dice addio alla scorciatoia rapida...
Tutte le scope elettriche in offerta per...
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: 16:48.


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