Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-09-2009, 18:18   #1
emanuele.g
Junior Member
 
Iscritto dal: Sep 2009
Messaggi: 4
[C] un neofita cerca aiuto, si chiude il prompt dei comandi

Salve a tutti, spero di non aver sbagliato sezione, ma sono nuovo
Vado al dunque subito, frequento ing. civile, e stiamo facendo il corso di programmazione, per il momento non ci sono state spiegate molte cose, ma nonostante tutto volevo provare a fare qualcosa a casa...
Mi è venuto in mente un programma che visualizzasse semplicemente la somma di due numeri, vi posto il codice:

#include<stdio.h>
main()
{
printf("Inserire il primo numero");
scanf("x");
printf("Inserire il secondo numero");
scanf("y");
printf("x+y");

}


peccato che c'è un problema, non appena inserisco il primo numero e premo invio, non faccio quasi neanche in tempo a leggere inserire il secondo numero che il prompt dei comandi si chiude, come mai? come lo risolvo?

Ultima modifica di emanuele.g : 30-09-2009 alle 18:23.
emanuele.g è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2009, 18:39   #2
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1059
a parte il fatto che quello non è assolutamente un codice funzionante

sintassi di scanf, variabili e cose del genere, mai sentite eh?

Ultima modifica di Energy++ : 30-09-2009 alle 19:29.
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2009, 18:45   #3
emanuele.g
Junior Member
 
Iscritto dal: Sep 2009
Messaggi: 4
usandolo con dev C++ sembra funzionare...
almeno l'inizio
emanuele.g è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2009, 18:50   #4
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Energy++, in effetti se ci pensi é vero
prima legge degli input dallo standard input (sconquassando lo stack ), poi stampa "x+y" e alla fine si chiude

bah, sono senza parole

la mia versione:
Codice:
#include <stdlib.h>
#include <stdio.h>

int main()
{
    int x, y;
    printf("inserire il primo numero: ");
    scanf("%d", &x);
    printf("inserire il secondo numero: ");
    scanf("%d", &y);
    printf("la somma é %d\n", x + y);
    return 0;
}
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2009, 18:53   #5
emanuele.g
Junior Member
 
Iscritto dal: Sep 2009
Messaggi: 4
della serie perculiamo uno se non è capace, bel comportamento, complimenti
per il momento me l'han spiegata così,non credevo mancassero dei pezzi, del resto l'avevo detto che ero all'inizio...

cazzo sfottete poi...:-|
emanuele.g è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2009, 19:10   #6
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1059
Quote:
Originariamente inviato da emanuele.g Guarda i messaggi
della serie perculiamo uno se non è capace, bel comportamento, complimenti
per il momento me l'han spiegata così,non credevo mancassero dei pezzi, del resto l'avevo detto che ero all'inizio...

cazzo sfottete poi...:-|
il fatto è che, da quello che hai scritto, si capisce che:

1. o non hai letto nemmeno 1 pagina di teoria
2. o quelli che che ti hanno detto che si fa in quel modo sono degli incompetenti
3. o tu hai capito male e quindi ti consiglio di cominciare a prendere il bel libro di C e iniziare a studiare
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2009, 19:16   #7
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Quote:
Originariamente inviato da Energy++ Guarda i messaggi
il fatto è che, da quello che hai scritto, si capisce che:

1. o non hai letto nemmeno 1 pagina di teoria
2. o quelli che che ti hanno detto che si fa in quel modo sono degli incompetenti
3. o tu hai capito male e quindi ti consiglio di cominciare a prendere il bel libro di C e iniziare a studiare
Quote:
Originariamente inviato da emanuele.g
Vado al dunque subito, frequento ing. civile, e stiamo facendo il corso di programmazione, per il momento non ci sono state spiegate molte cose, ma nonostante tutto volevo provare a fare qualcosa a casa...
L'utente ha specificato che è alle prime basi (anzi, che non ha neanche quelle) ma nonostante ciò sta provando a fare qualcosa: mi pare un tentativo lodevole, perchè piuttosto non gli spiegate gli errori che ha commesso, così li capisce anche lui ?
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2009, 19:17   #8
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da Energy++ Guarda i messaggi
apparte il fatto che quello non è assolutamente un codice funzionante

sintassi di scanf, variabili e cose del genere, mai sentite eh?
e a parte che non si scrive "apparte" ma "a parte".

Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2009, 19:29   #9
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1059
Quote:
Originariamente inviato da Vincenzo1968 Guarda i messaggi
e a parte che non si scrive "apparte" ma "a parte".

chiedo scusa per la svista

Ultima modifica di Energy++ : 30-09-2009 alle 19:36.
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2009, 21:19   #10
Y3PP4
Member
 
Iscritto dal: Jul 2009
Messaggi: 210
Ciao,

questo codice non può funzionare perchè non usi in modo appropriato le varie funzioni. Non ti compare la seconda stringa "Inserire il secondo numero" perchè il programma và in crash per via dell'utilizzo improprio, appunto, della funzione scanf.
Il mio consiglio, prima di continare è quello di cercare a mano a mano, su Google le varie funzioni e cercare di capire come si usano, quali parametri accettano e quali risultati restituiscono. Ovviamente la base, ovvero, i principi elementari di un programma, il significato di una return perchè si deve usare per forza main() etc, tra cui i tipi di dati esistenti nel C sono d'obbligo.
La prima riga:
Codice:
#include <stdio.h>
è giusta, ed è una direttiva del preprocessore (presente nei maggiori compilatori oggi esistenti, appunto pre-processa il sorgente).
Praticamente gli dice includi nel sorgente da compilare il contenuto del file header di nome "stdio" (standard I/O).
Questo header contiene le dichiarazioni (che si differenzia dalla definizione, per maggiori info su wiki cerca i due termini) delle funzioni primarie per la gestione dello standard input e output (in C referenziati come stdin e stdout)
Codice:
main()
io ti consiglio di cambiarlo con:
Codice:
int main(){
int preposto al nome della funzione, specifica che la funzione restituisce un valore intero (return 0. In vari compilatori la sua mancanza (non dell'int, ma del tipo di dato restituito -nel caso sia assente o indefinito è di tipo void-) genera un errore che impedisce di ottenere l'eseguibile -sinceramente non ricordo se è compito del compilatore o del linker-.
Il programma deve necessariamente contenere una funzione di nome main in quanto è l'entry point, la locazione di memoria da cui comincerà l'esecuzione del programma. In assenza riceverai un errore durante la compilazione dell'eseguibile.
Codice:
printf("Inserire il primo numero");
Questa funzione è usata in modo proprio. Tieni a mente che verrà stampata esattamente com'è -al termine dell'istruzione non verrà effettuato il ritorno a capo-, pertanto potresti voler separare di almeno uno spazio la stringa dal numero che devi immettere
Codice:
printf("Inserire il primo numero: ");
Ecco qui l'utilizzo improprio della funzione scanf.
Innanzitutto, la scanf è dichiarata come:
Codice:
 int scanf(char *format, args ...)
Accetta come primo parametro un identificatore del tipo di formato che verrà immesso dall'utente (nel tuo caso sarà %d -intero-) e come secondo argomento la variabile che conterrà il valore. In verità come vedi i puntini indicano che puoi immettere più variabili, ma tralasciamo le cose, attualmente, inutili.
Ora sapendo che: per forza di cose una variabile deve essere dichiarata PRIMA del suo utilizzo, capirai che prima di usare quella funzione te devi dichiarare una variabile per contenere il valore.
Per ordine le variabili andrebbero poste all'inizio del programma. Adesso con i nuovi standard è possibile mettere le varibili appena prima del loro utilizzo, ma, prendi con le pinze quanto stò per dirti, una volta era obbligatorio definire all'inizio del blocco di codice (un blocco è racchiuso tra {} -semplice terminologia, niente di chè-).
Alla fine ti mostro un esempio funzionante ora, invece, riscrivo solo la funzione in una funzionante:
Codice:
scanf("%d", &x);//supponendo di aver già dichiarato X come int
//la e commerciale dice al compilatore di passare l'indirizzo della variabile anzichè passarne una copia.
Idem per il secondo printf e scanf che quindi tralascio ora.
Codice:
printf("x+y");
E' errato in quanto stai dicendo: stampa la stringa (definita dalle virgolette, o doppi apici) "x+y".
Per ottenere il risultato che ti aspetti devi usare una piccola convenzione C:
Codice:
printf("%d", (x+y))//ecco che ritorna %d che indica ancora una volta che verrà passato un intero
//per maggiori info basta una semplice impolverata sulle basi di I/O
A questo punto il sorgente è quasi pronto.
Quasi perchè manca la funzione return, che restituisce un valore intero. 0 indica terminazione con successo, altri valori indicano uno stato d'errore.

A questo punto il sorgente funzionante è:
Codice:
#include <stdio.h>
int main()
{ //apro il blocco di istruzioni
  int x,y; //la virgola mi permette di istanziare più variabili in una sola istruzione;
  printf("Inserisci il primo numero: ");
  scanf("%d", &x); //salvo il valore immesso nella var x
  printf("Inserisci ora il secondo numero: ");// qui, curiosità ti trovi a capo la stringa
// poichè la pressione di Enter o Invio per la scanf causa un ritorno a capo.
  scanf("%d", &y); //ora salvo in y
  printf("Il risultato della addizione di x(%d) + y(%d) è:%d", x, y, (x+y));
// Come vedi per ogni occorrenza della sequenza di caratteri %d ho immesso 
// dopo un valore del tipo intero (avendo usato %d). In caso contrario si
// solleverebbe una eccezione
  return 0;//restituisco 0, terminazione con successo
}//chiudo il blocco di istruzioni
Questo è quanto. Aggiungo solo che // permette di scrivere commenti che terminano a fine riga.
Buona serata.
__________________
La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
Isaac Asimov
Y3PP4 è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2009, 21:23   #11
Y3PP4
Member
 
Iscritto dal: Jul 2009
Messaggi: 210
Chiedo scusa per il doppio post consecutivo. Ma ho sbagliato a cliccare tra modifica e quote.
Un consiglio:
Codice:
ca**o sfottete poi...:-|
Non usare certe espressioni volgari, rischi di rimetterci solo tu sia come immagine che per eventuali interventi della moderazione. Semplicemente ignora ciò che ti infastidisce o segnala alla moderazione le repliche che ritieni fuori luogo o offensive, qualora dovessero mai esserci. Io non mi riferisco a nessuno in particolare, parlo in generale.
__________________
La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
Isaac Asimov
Y3PP4 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
iPhone 16 torna super conveniente: ora c...
Offerte Amazon pazzesche: tech, smartpho...
Ubisoft annuncia l'arrivo dei 60 fps per...
Infratel Italia: ecco la nuova mappa del...
Hoover HMC5 in offerta: il battimaterass...
Un'idea 'rivoluzionaria' dal Politecnico...
Steam ha registrato un record di ricavi ...
'Quando sei pronto… vai': ChatGPT sotto ...
Razer: l'intelligenza artificiale piace ...
Disastro Rad Power Bikes: incendio al ma...
Speciale Braun in offerta su Amazon: reg...
Threads cresce e batte X su mobile a liv...
Televisori, asse Sony - TCL: c'è ...
Uso del carbone in calo in Cina e India ...
Una potente tempesta solare colpisce la ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:54.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v