PROBLEMA Programmi in c++

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
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
8
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
8
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,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
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
8
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

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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
138
OS
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
8
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
8
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

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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.
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,902
11,552
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
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
8
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,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
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
8
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
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili