PROBLEMA Programmi in c++

Pubblicità
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
 
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
 
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;
}
}
 
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.
 
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.
 
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:
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
 
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
 
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.
 
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
 
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?
 
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.
 
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
 
Pubblicità
Pubblicità
Indietro
Top