AngeL)
28-06-2006, 11:49
stamattina ho scritto questo codice per fare le cose scritte nel commento a inizio codice.
le domande che vi faccio sono dopo il codicino di 101 righe :D
/*Definire l’algoritmo per leggere un numero noto(N) di numeri reali e
contare:
1) quelli maggiori/minori di numero prefissato
2) quelli positivi
3) quelli divisibili per numero prefissato
(avendo a disposizione l’operatore %)
*/
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "Quanti numeri reali desidera immettere?: ";
cin >> n;
int arr[n];
int pos[n];
int divx[n];
int M[n];
int m[n];
int Mm;
int x;
int i;
int currparr=0;
int currpM=0;
int currpm=0;
int currpp=0;
int currpd=0;
for(i=0;i<=n;i++)
{
cout << "Inserisca il " << n << "esimo numero: ";
cin >> arr[i];
pos[i]=0;
divx[i]=0;
M[i]=0;
m[i]=0;
}
cout << "Inserisca il numero, del quale verranno calcolati i numeri"
<< " maggiori e minori presenti nella sequenza immessa.\n"
<< "Il numero non deve essere uguale a nessuno dei numeri"
<< " presenti nella sequenza.\n";
cin >> Mm;
cout << "Inserisca il numero del quale verranno calcolati i divisori"
<< " presenti nella sequenza immessa.\n";
cin >> x;
do
{
if(arr[currparr]>Mm)
{
M[currpM]=arr[currparr];
}
if(arr[currparr]<Mm)
{
m[currpm]=arr[currparr];
}
currparr++;
}while(currparr==49);
currparr=0;
do
{
if(arr[currparr]>0)
{
pos[currpp]=arr[currparr];
}
currparr++;
}while(currparr==49);
currparr=0;
do
{
if(arr[currparr]%x==0)
{
divx[currpd]=arr[currparr];
}
currparr++;
}while(currparr==49);
cout << "I numeri maggiori di "<< Mm << " presenti nella sequenza sono:\n";
for(i=0;i<=currpM;i++)
{
cout << M[i] << ", ";
}
cout << endl;
cout << "I numeri minori di " << Mm << " presenti nella sequenza sono:\n";
for(i=0;i<=currpm;i++)
{
cout << m[i] << ", ";
}
cout << endl;
cout << "I numeri positivi presenti nella sequenza sono:\n";
for(i=0;i<=currpp;i++)
{
cout << pos[i] << ", ";
}
cout << endl;
cout << "I numeri divisibili per " << x << " sono:\n";
for(i=0;i<=currpd;i++)
{
cout << divx[i] << ", ";
}
cout << endl;
}
1)come faccio a creare un array di n valori se non posso usare una variabile?
posso definire una costante cosi?-> const x=n; ?//dove n e la variabile che contiene la quantta di numeri che deve avere l'array
2)esiste una funzione che restituisce la prima posizione che ha valore 0 dell'array?, cosi da evitarmi curr(ent)p(os)arr, ecc ecc? (se non esiste ho pensato di crearla io, dandole il nome dell'array come argomento e facendole restituire la prima posizione che contiene 0(es. currp(divx) )
3) come posso accorciare questo codice?
4)se avete qualche consiglio che non rientra nelle 3 domande postatelo pure ;)
grazie 1000 in anticipo.
le domande che vi faccio sono dopo il codicino di 101 righe :D
/*Definire l’algoritmo per leggere un numero noto(N) di numeri reali e
contare:
1) quelli maggiori/minori di numero prefissato
2) quelli positivi
3) quelli divisibili per numero prefissato
(avendo a disposizione l’operatore %)
*/
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "Quanti numeri reali desidera immettere?: ";
cin >> n;
int arr[n];
int pos[n];
int divx[n];
int M[n];
int m[n];
int Mm;
int x;
int i;
int currparr=0;
int currpM=0;
int currpm=0;
int currpp=0;
int currpd=0;
for(i=0;i<=n;i++)
{
cout << "Inserisca il " << n << "esimo numero: ";
cin >> arr[i];
pos[i]=0;
divx[i]=0;
M[i]=0;
m[i]=0;
}
cout << "Inserisca il numero, del quale verranno calcolati i numeri"
<< " maggiori e minori presenti nella sequenza immessa.\n"
<< "Il numero non deve essere uguale a nessuno dei numeri"
<< " presenti nella sequenza.\n";
cin >> Mm;
cout << "Inserisca il numero del quale verranno calcolati i divisori"
<< " presenti nella sequenza immessa.\n";
cin >> x;
do
{
if(arr[currparr]>Mm)
{
M[currpM]=arr[currparr];
}
if(arr[currparr]<Mm)
{
m[currpm]=arr[currparr];
}
currparr++;
}while(currparr==49);
currparr=0;
do
{
if(arr[currparr]>0)
{
pos[currpp]=arr[currparr];
}
currparr++;
}while(currparr==49);
currparr=0;
do
{
if(arr[currparr]%x==0)
{
divx[currpd]=arr[currparr];
}
currparr++;
}while(currparr==49);
cout << "I numeri maggiori di "<< Mm << " presenti nella sequenza sono:\n";
for(i=0;i<=currpM;i++)
{
cout << M[i] << ", ";
}
cout << endl;
cout << "I numeri minori di " << Mm << " presenti nella sequenza sono:\n";
for(i=0;i<=currpm;i++)
{
cout << m[i] << ", ";
}
cout << endl;
cout << "I numeri positivi presenti nella sequenza sono:\n";
for(i=0;i<=currpp;i++)
{
cout << pos[i] << ", ";
}
cout << endl;
cout << "I numeri divisibili per " << x << " sono:\n";
for(i=0;i<=currpd;i++)
{
cout << divx[i] << ", ";
}
cout << endl;
}
1)come faccio a creare un array di n valori se non posso usare una variabile?
posso definire una costante cosi?-> const x=n; ?//dove n e la variabile che contiene la quantta di numeri che deve avere l'array
2)esiste una funzione che restituisce la prima posizione che ha valore 0 dell'array?, cosi da evitarmi curr(ent)p(os)arr, ecc ecc? (se non esiste ho pensato di crearla io, dandole il nome dell'array come argomento e facendole restituire la prima posizione che contiene 0(es. currp(divx) )
3) come posso accorciare questo codice?
4)se avete qualche consiglio che non rientra nelle 3 domande postatelo pure ;)
grazie 1000 in anticipo.