PROBLEMA Programmi in c++

rodhellas

Utente Èlite
1,506
422
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
Hard Disk
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
Scheda Video
Gigabyte GTX 960 OC
Scheda Audio
Integrata
Monitor
SyncMaster 223BW
Alimentatore
Antec HCG-520M
Case
Meshify C
Internet
Gigabit Fastweb
Sistema Operativo
Windows 10 64bit
Facciamo che n=5

#include<iostream>
using namespace std;
main()
{
int n;
cout<<"Inserisci un numero";
cin>>n;
cout<<1<<2<<3<<4<<n; -> questa è la fase che sicuramente sbaglio..
}
Come detto sopra, devi usare i cicli ( for, while, do-while, etc..). Prendendo per esempio il for:
Sintassi:
for ( int i = x; i < limite; i++ ) { ... }
Questa è la forma base, significa che preso come punto di partenza un indice di valore x, ripetimi il corpo del for (quello tra graffe) finchè la condizione è rispettata.
Nel tuo caso, noti subito che l'indice è esattamente il valore che devi stampare in output. Quindi nel tuo caso l'indice sarà 1, il limite sarà n e il corpo sarà semplicemente il cout dell'indice.
In generale, qualsiasi ciclo può far tutto. Il while lo si usa di solito quando una condizione è booleana, il for quando si conosce in precedenza il numero di volte che bisogna ripetere
 

francescocerrato200

Nuovo Utente
98
9
Come detto sopra, devi usare i cicli ( for, while, do-while, etc..). Prendendo per esempio il for:
Sintassi:
for ( int i = x; i < limite; i++ ) { ... }
Questa è la forma base, significa che preso come punto di partenza un indice di valore x, ripetimi il corpo del for (quello tra graffe) finchè la condizione è rispettata.
Nel tuo caso, noti subito che l'indice è esattamente il valore che devi stampare in output. Quindi nel tuo caso l'indice sarà 1, il limite sarà n e il corpo sarà semplicemente il cout dell'indice.
In generale, qualsiasi ciclo può far tutto. Il while lo si usa di solito quando una condizione è booleana, il for quando si conosce in precedenza il numero di volte che bisogna ripetere
Ancora non capisco cosa sta a significare i<limite e i++


Inviato dal mio iPhone utilizzando Tapatalk
 

francescocerrato200

Nuovo Utente
98
9
Lo puoi trovare sul tuo libro di testo, dove spiega il ciclo "for"
Noi cerchiamo di aiutarti, ma ti devi impegnare un po', queste sono le basi della programmazione.
Come detto sopra, devi usare i cicli ( for, while, do-while, etc..). Prendendo per esempio il for:
Sintassi:
for ( int i = x; i < limite; i++ ) { ... }
Questa è la forma base, significa che preso come punto di partenza un indice di valore x, ripetimi il corpo del for (quello tra graffe) finchè la condizione è rispettata.
Nel tuo caso, noti subito che l'indice è esattamente il valore che devi stampare in output. Quindi nel tuo caso l'indice sarà 1, il limite sarà n e il corpo sarà semplicemente il cout dell'indice.
In generale, qualsiasi ciclo può far tutto. Il while lo si usa di solito quando una condizione è booleana, il for quando si conosce in precedenza il numero di volte che bisogna ripetere
Una cosa del genere? :

#include<iostream>
using namespace std;
main()
{
int i,n;
cout<<"Inserisci un numero maggiore di 1:";
cin>>n;
for (i=1;i<n;i=i+1)
{
cout<<i;
}
}
 

rodhellas

Utente Èlite
1,506
422
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
Hard Disk
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
Scheda Video
Gigabyte GTX 960 OC
Scheda Audio
Integrata
Monitor
SyncMaster 223BW
Alimentatore
Antec HCG-520M
Case
Meshify C
Internet
Gigabit Fastweb
Sistema Operativo
Windows 10 64bit
Una cosa del genere? :

#include<iostream>
using namespace std;
main()
{
int i,n;
cout<<"Inserisci un numero maggiore di 1:";
cin>>n;
for (i=1;i<n;i=i+1)
{
cout<<i;
}
}
Si, dovresti mettere i<=n cosi da stampare anche n.
 

francescocerrato200

Nuovo Utente
98
9
Si, dovresti mettere i<=n cosi da stampare anche n.
Comunque infine l'ho studiato e ho capito... la codifica è questa:

#include<iostream>
using namespace std;
main()
{
int i,n;
cout<<"Inserisci un numero maggiore di 1:";
cin>>n;
if(n<1)cout<<"Il numero e' piu piccolo di 1";
for(i=1;i<=n;i++){
cout<<i<<endl;
}
}

L'unica cosa è che vorrei che nel programma fossero visibili le operazioni... Nel senso vorrei che in output mi darebbe questo:


1
1+1=2
1+2=3
1+3=4
ecc..

e non la semplice numerazione come questa qui sotto:

1
2
3
4
5.







Ho provato a modificare il cout finale scrivendo cosi:
printf("%d+1=%d", i , i+1);
cout<<endl;

solo che poi mi esce questo:

(es n=5)

1 -> e anche questo se magari uscisse sarebbe meglio...
1+1=2
1+2=3
1+3=4
1+4=5
1+5=6 -> questo non deve esserci.


Spero di essere stato chiaro...
Grazie in anticipo.
 

DispatchCode

Utente Attivo
692
427
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Internet
30Mbps/3Mbps con Eolo
Sistema Operativo
Windows 10 64bit
Non dovresti utilizzare la printf, visto che stai usando C++.
Per ottenere quell'output non devi arrivare a i=n; quindi se l'ultimo output deve essere, per n=5, "1+5=6" allora dovresti fare:

Codice:
#include<iostream>
using namespace std;

int main()
{
  int i,n;
 
  cout<<"Inserisci un numero maggiore di 1:";
  cin>>n;

  if(n<1)
    cout<<"Il numero e' piu piccolo di 1";

  for(i=1;i<n;i++)
  {
    cout<< "1 + " << i << " = " << (1 + i) << endl;
  }
 
  return 0;
}

PS. ti sarà già stato detto forse, comunque se posti del codice, usa il tag CODE. ;)

PPS. se quell'if vuole essere una verifica per non proseguire, dovresti inserire un return.
 

Marcus Aseth

Utente Attivo
404
136
Sistema Operativo
Windows 10
suggerisco di dichiarare le variabili subito prima dell'uso, in questo caso 'i' sarebbe meglio se inizializzata dentro il for loop come
C++:
for( int i = 0; i < n; i++){

}
sia per mostrarti che si può, sia per ragioni di scoping, cioè in futuro in altro codice spesso non vorrai quella 'i' visibile da fuori a quel loop, sia per non dimenticare mai di inizializzarla.

Riguardo la tua domanda su come tenere anche l'uno, è meglio se tieni una pattern uniforme quindi "1+0 = 1" (nota che il for loop sopra inizia a 0) anzichè l' 1 da solo, così puoi ottenerlo con lo stesso cout usato per ottenere gli altri (una sola linea di codice per "stamparli" tutti), altrimenti ti serve un branch "if - else" (oppure un "ternary operator") per decidere quale cout usare in base al valore di 'n'.
 
Ultima modifica:

francescocerrato200

Nuovo Utente
98
9
Non dovresti utilizzare la printf, visto che stai usando C++.
Per ottenere quell'output non devi arrivare a i=n; quindi se l'ultimo output deve essere, per n=5, "1+5=6" allora dovresti fare:

Codice:
#include<iostream>
using namespace std;

int main()
{
  int i,n;
 
  cout<<"Inserisci un numero maggiore di 1:";
  cin>>n;

  if(n<1)
    cout<<"Il numero e' piu piccolo di 1";

  for(i=1;i<n;i++)
  {
    cout<< "1 + " << i << " = " << (1 + i) << endl;
  }
 
  return 0;
}

PS. ti sarà già stato detto forse, comunque se posti del codice, usa il tag CODE. ;)

PPS. se quell'if vuole essere una verifica per non proseguire, dovresti inserire un return.
Scusa puoi spiegarmi a cosa serve "return 0"?


Inviato dal mio iPhone utilizzando Tapatalk
 

francescocerrato200

Nuovo Utente
98
9
Non dovresti utilizzare la printf, visto che stai usando C++.
Per ottenere quell'output non devi arrivare a i=n; quindi se l'ultimo output deve essere, per n=5, "1+5=6" allora dovresti fare:

Codice:
#include<iostream>
using namespace std;

int main()
{
  int i,n;
 
  cout<<"Inserisci un numero maggiore di 1:";
  cin>>n;

  if(n<1)
    cout<<"Il numero e' piu piccolo di 1";

  for(i=1;i<n;i++)
  {
    cout<< "1 + " << i << " = " << (1 + i) << endl;
  }
 
  return 0;
}

PS. ti sarà già stato detto forse, comunque se posti del codice, usa il tag CODE. ;)

PPS. se quell'if vuole essere una verifica per non proseguire, dovresti inserire un return.
Ah inoltre nella schermata vorrei levare l'operazione tra 1 e il numero più grande di n...

Esempio: (n=5)

1+1=2
1+2=3
1+3=4
1+4=5
1+5=6 -> questo voglio levarlo


Inviato dal mio iPhone utilizzando Tapatalk
 

DispatchCode

Utente Attivo
692
427
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Internet
30Mbps/3Mbps con Eolo
Sistema Operativo
Windows 10 64bit
Il return 0 restituisce il controllo al sistema operativo indicando che non si sono verificati errori (Windows in realtà non considera molto il codice, ma da debugger vedresti la differenza). Se non lo indichi penso che il compilatore se ne occupi da sé.

Non ho capito invece il tuo secondo intervento: per ottenere quel risultato dovresti scorrere sino a <n.
Fare controlli per l'uscita non avrebbe senso, proprio perché già con quella sola condizione non eccederesti il valore di n.
 

BAT00cent

Utente Attivo
1,366
662
CPU
Neurone solitario
Dissipatore
Ventaglio azionato a mano
Scheda Madre
Poltrona a 5 razze
Hard Disk
Registra solo quello che gli fa comodo
RAM
Molto molto volatile
Scheda Video
Binoculare integrata nel cranio
Scheda Audio
Suocera
Monitor
Specchio, specchio delle mie brame...
Alimentatore
Pastascituta, pollo e patatine al forno
Case
Nessuna, i mutui non li reggo
Periferiche
Bicicletta con freni difettosi
Internet
Segnali di fumo e/o tamburi
Sistema Operativo
Windows 10000 BUG
intanto @francescocerrato200 dovresti dichiarare
int main()
in secondo luogo, la somma dei numeri da una a n è 1+2+3+...+n
che puoi calcolare sia nello stesso ciclo for che, molto molto meglio, usando la forumula n(n+1)/2
 

francescocerrato200

Nuovo Utente
98
9
Il return 0 restituisce il controllo al sistema operativo indicando che non si sono verificati errori (Windows in realtà non considera molto il codice, ma da debugger vedresti la differenza). Se non lo indichi penso che il compilatore se ne occupi da sé.

Non ho capito invece il tuo secondo intervento: per ottenere quel risultato dovresti scorrere sino a <n.
Fare controlli per l'uscita non avrebbe senso, proprio perché già con quella sola condizione non eccederesti il valore di n.

Grazie mille li ho capiti e sono riusciti a farli... Mi rimane l'ultimo ovvero:

Dato n, leggere n numeri interi e calcolare la somma dei numeri pari e la somma dei numeri dispari.

Ho provato una cosa del genere, ma cioè sono sicuro di aver sbagliato...


#include<iostream>
using namespace std;
main()
{
int n,i,P,D,S,NUM;
cout<<"Inserire un numero intero:"<<endl;
cin>>n;
for(i=1;i<=n;i++){
cout<<i<<endl;
}
NUM=i/2;
if (NUM=(float)NUM) i=D; else i=P;
S=P+D;
cout<<P<<"+"<<D<<"="<<S<<endl;
}

Comunque come si mette il tag CODE?
 

rodhellas

Utente Èlite
1,506
422
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
Hard Disk
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
Scheda Video
Gigabyte GTX 960 OC
Scheda Audio
Integrata
Monitor
SyncMaster 223BW
Alimentatore
Antec HCG-520M
Case
Meshify C
Internet
Gigabit Fastweb
Sistema Operativo
Windows 10 64bit
Grazie mille li ho capiti e sono riusciti a farli... Mi rimane l'ultimo ovvero:

Dato n, leggere n numeri interi e calcolare la somma dei numeri pari e la somma dei numeri dispari.

Ho provato una cosa del genere, ma cioè sono sicuro di aver sbagliato...


#include<iostream>
using namespace std;
main()
{
int n,i,P,D,S,NUM;
cout<<"Inserire un numero intero:"<<endl;
cin>>n;
for(i=1;i<=n;i++){
cout<<i<<endl;
}
NUM=i/2;
if (NUM=(float)NUM) i=D; else i=P;
S=P+D;
cout<<P<<"+"<<D<<"="<<S<<endl;
}

Comunque come si mette il tag CODE?
Il tag code si mette cosi [ CODE] codice bellino [ / CODE] (ovviamente niente spazi tra le parentesi quadrate).
Comunque, è completamente sbagliato ( tanto per dire, l'= è l'operatore d'assegnamento, l'== l'operatore di confronto (uguaglianza)). Un numero è pari se il resto della divisione per 2 è 0. Dispari altrimenti.
Comunque, hai delle gran grosse lacune sulle cose basilari. Non so se siano dovute dal mal insegnamento del prof ( mi caschi dalle nuvole con il return 0, magari non lo aveva mai spiegato ) o dal tuo poco studio, comunque ti consiglio vivamente di rivedere tutto dall'inizio per bene.
 

francescocerrato200

Nuovo Utente
98
9
Il tag code si mette cosi [ CODE] codice bellino [ / CODE] (ovviamente niente spazi tra le parentesi quadrate).
Comunque, è completamente sbagliato ( tanto per dire, l'= è l'operatore d'assegnamento, l'== l'operatore di confronto (uguaglianza)). Un numero è pari se il resto della divisione per 2 è 0. Dispari altrimenti.
Comunque, hai delle gran grosse lacune sulle cose basilari. Non so se siano dovute dal mal insegnamento del prof ( mi caschi dalle nuvole con il return 0, magari non lo aveva mai spiegato ) o dal tuo poco studio, comunque ti consiglio vivamente di rivedere tutto dall'inizio per bene.
Comunque ti ricordo che sono al 2 anno di itis informatico... Ho iniziato a studiare il c++ una settimana prima delle vacanze.. Adesso non voglio vantarmi,ma a livello di voti e quindi oggettivamente parlando sono il migliore della mia classe... O al massimo sono primo insieme ad un altro ragazzo.. Cioè per farti capire il professore ci ha spiegato solamente le basi delle basi.. Infatti i miei compagni di classe solo a guardare le traccie non hanno capito nulla.. E sicuramente verranno da me a chiedermi le foto di come li ho fatti...

In ogni caso, chiusa questa parentesi che non volevo scrivere, potresti aiutarmi con questo esercizio?


Inviato dal mio iPhone utilizzando Tapatalk
 

Entra

oppure Accedi utilizzando

Discussioni Simili

Hot del momento