Programma in C++ ?

Vincenzo983
Sto studiando programmazione e sul libro ho trovato questo codice che mi calcola il logaritmo di un numero di una qualsiasi base.

#include
#include

int main(int argc, char** argv) {
double what, base;
std::cout << "Numero da \"logaritmare\":\t";
std::cin >> what;
std::cout << "Base:\t\t\t\t";
std::cin >> base;
std::cout << "Risultato:\t\t\t" << log(what)/log(base) << std::endl;
return 0;
}


Vorrei sapere cosa significano questi comandi :
\t\t\t\t
int argc, char** argv

Inoltre vorrei sapere perchè quando vado ad aprire il programma creato, una volta che mi ha dato il risultato si chiude immediatamente.

Grazie.

Risposte
Sherlock.h
1. \t è un carattere di escape, ovvero un carattere speciale con alcune caratteristiche.
Nella fattispecie \t indica il carattere di tabulazione.
Non è l'unico carattere di questo tipo, uno dei più usati è il carattere di newline "\n" che serve per poter andare "a capo".
Per quanto riguarda il tuo codice, utilizzato in cout (o funzioni dello stesso tipo) non fa altro che sostituire ogni occorrenza di \t con una tabulazione nella stampa a video.

2. Per quanto riguarda invece i parametri argc e argv servono a specificare eventuali parametri nel caso in cui si lanci il programma da riga di comando, o comunque in situazioni simili.

3. Ricordo che per chi usa Windows è una situazione frequente quella della chiusura non desiderata della finestra del programma, questo ha portato alla creazione di pessimo codice, e l'esasperato utilizzo di system("pause");
Non usare la suddetta istruzione.
Ti basta inserire un semplice getchar(); come ultima istruzione prima del return nel main per fare in modo che la finestra non si chiuda. Questa funzione attende l'inserimento di un carattere da tastierà, e finché non riceve il tuo input, si limiterà ad attendere.

Vincenzo983
"Sherlock.h":
1. \t è un carattere di escape, ovvero un carattere speciale con alcune caratteristiche.
Nella fattispecie \t indica il carattere di tabulazione.
Non è l'unico carattere di questo tipo, uno dei più usati è il carattere di newline "\n" che serve per poter andare "a capo".
Per quanto riguarda il tuo codice, utilizzato in cout (o funzioni dello stesso tipo) non fa altro che sostituire ogni occorrenza di \t con una tabulazione nella stampa a video.

2. Per quanto riguarda invece i parametri argc e argv servono a specificare eventuali parametri nel caso in cui si lanci il programma da riga di comando, o comunque in situazioni simili.

3. Ricordo che per chi usa Windows è una situazione frequente quella della chiusura non desiderata della finestra del programma, questo ha portato alla creazione di pessimo codice, e l'esasperato utilizzo di system("pause");
Non usare la suddetta istruzione.
Ti basta inserire un semplice getchar(); come ultima istruzione prima del return nel main per fare in modo che la finestra non si chiuda. Questa funzione attende l'inserimento di un carattere da tastierà, e finché non riceve il tuo input, si limiterà ad attendere.


Ok, grazie ho risolto.
Un ultima cosa il comando std cosa indica ?

apatriarca
Ci sono un paio di informazioni sbagliate nel precedente post di Sherlock.h

1. Le sequenze di escape (con escape character si intende normalmente semplicemente il carattere di inizio della sequenza e cioè '\' in questo caso) sono semplicemente sequenze di caratteri che vengono convertite dal compilatore (e non da funzioni di stampa o altro) in singoli caratteri. Per cui "a\t" è equivalente alla sequenza di byte 97 ('a'), 9 ('\0') e 0 (terminatore della stringa) se si usa la codifica ASCII. La sequenza '\t' corrisponde al carattere di tabulazione. Queste particolari sequenze sono in effetti comuni anche a molti altri linguaggi di programmazione per cui ti conviene impararle.

3. Il problema non ha nulla a che vedere con Windows. È Dev-C++, un PESSIMO IDE che è diventato del tutto inspiegabilmente popolare tra i professori di informatica, la causa di tutto. A quanto pare questi professori non avevano mai programmato in Windows in vita loro per cui hanno iniziato a consigliare il primo IDE per mingw di cui hanno sentito vagamente parlare. Era infatti questo IDE (e SOLO questo IDE) che proponeva di usare system("PAUSE") alla fine del suo codice di default. Ed era inoltre questo IDE che non proponeva alcun metodo semplice per impedire la chiusura della finestra alla fine della esecuzione. Altri IDE su Windows NON hanno questo problema, ma i sopracitati professori sembrano si siano convinti che invece questo problema è comune a tutto il mondo Windows. E ovviamente hanno convinto anche i loro studenti di tutte queste str**zate. L'uso di getchar alla fine NON è una soluzione al problema. La soluzione consiste semplicemente nell'usare IDE differenti e impararne il funzionamento. Molti IDE per esempio chiudono il programma in modalità di debug (quando fai il debug ci sono i breakpoint a bloccare l'esecuzione), ma non lo fanno se si esegue il programma senza fare il debug.

Sherlock.h
Grazie mille da parte mia :smt023
Chiedo scusa a Vincenzo98 per le inesattezze

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.