Scrivere primo programma in C++ con VS2010

di Anonimizzato10215 il
12 risposte
Salve a tutti,
sono nuovo del forum.

Ho scritto dei programmi di base in C++ con Dev++ un po' di tempo fa.

Adesso vorrei capire come scrivere un primo programma in C++ con VisualStudio 2010
Parto con programmi semplici, tipici di chi sta imparando a programmare.

Ho seguito una guida su internet, ma il programma che voglio scrivere include la libreria iostream e il compilatore pare non trovarla.

Il file iostream.h deve comparire nella cartella dei file di intestazione?
A me non compare!
Dalla cartella dipendenze esterne ho trovato iostream, ho scelto 'Includi nel progetto' ma è finito nella cartella File di risorse.

Forse ho sbagliato nella scelta delle impostazioni iniziali del nuovo progetto: File->New->Progetto Console Win32 poi ho lasciato tutto di default

Avrei dovuto settare qualcosa?

Grazie infinite

12 Risposte

  • Ecco perche si continua a dire di non utilizzare Dev-C++. iostream.h non è un file standard, il file giusto è quello incluso in VC2010 ovvero iostream.
    
    #include <iostream>
    
    int main()
    {
    }
    
    Un programma del genere dovrebbe compilarsi.
  • Infatti ho messo così.

    Ecco il mio programma d'esempio, l'ho preso di qui:
    //programma atto a calcolare la media di n numeri
    
    #include<iostream.h>
    typedef float vettore[100];
    void leggi(int &d,vettore v);
    void calcola(int &d,vettore v,float &media);
    void stampa(int &d,float &media);
    
    void main()
    {
    int d,rip;
    float media;
    vettore v;
    do
     {
      cout<<"\n\n ***MEDIA DI N NUMERI***  by Enzo\n";
      leggi(d,v);
      calcola(d,v,media);
      stampa(d,media);
      cout<<"\n\n Vuoi continuare ancora?";
      cout<<"\n si=1 no=0 : ";
      cin>>rip;
      if(rip!=1)
       {
        cout<<"\n\n -----FINE PROGRAMMA-----";
       }
     }
    while(rip==1);
    }
    
    void leggi(int &d,vettore v)
    {
    int i;
    cout<<"\n\n Quanti sono i numeri per i quali";
    cout<<"\n devo calcolare la media?";
    do
     {
      cout<<"\n n(max 100 numeri)= ";
      cin>>d;
      if(d>100)
       {
        cout<<"\n ERROR!";
       }
     }
    while(d>100);
    for(i=0;i<d;i++)
     {
      cout<<"\n\n Inserisci il numero n="<<(i+1)<<" : ";
      cin>>v[i];
     }
    }
    
    void calcola(int &d,vettore v,float &media)
    {
    int i;
    media=0;
    for(i=0;i<d;i++)
    media=media+v[i];
    media=media/d;
    }
    
    void stampa(int &d,float &media)
    {
    cout<<"\n\n La media dei "<<d<<" numeri inseriti e':  "<<media;
    }
    VS dice:
    ------ Inizio compilazione: Progetto: media, Configurazione: Debug Win32 ------
    Compilazione avviata 30/03/2012 15:53:45.
    PrepareForBuild:
    Creazione directory "C:\Users\Administrator\dev\mydev\esercizi\media\Debug\".
    InitializeBuildStatus:
    Creazione di "Debug\media.unsuccessfulbuild". È stato specificato "AlwaysCreate".
    ClCompile:
    stdafx.cpp
    media.cpp
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(3): warning C4627: '#include <iostream.h>': ignorato durante la ricerca dell'utilizzo di un'intestazione precompilata
    Aggiungere la direttiva a 'StdAfx.h' o ricompilare l'intestazione precompilata
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(66): fatal error C1010: fine file imprevista durante la ricerca dell'intestazione precompilata. Si è omesso di aggiungere '#include "StdAfx.h"' all'origine?

    Compilazione NON RIUSCITA.

    Tempo trascorso 00:00:02.20
    ========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========

    Che cosa dovrei fare?
    Secondo me devo impostare bene VS2010

    Grazie
  • Non devi impostare bene VS. E' già a posto.
    1. Devi includere iostream senza il .h quindi diventa #include <iostream>
    2. scegli il file media.cpp col tasto dx e fai proprietà:
    Scegli C++
    Scegli Header precompilati
    Nel Crea/Usa metti: Non usare header precompilati
    Ricompila e dovrebbe funzionare.
  • Ho correto la 1.

    Poi da Proprietà->Prop. di configurazione->C/C++->Intestazioni precompilate ho scelto 'Senza intestazioni precompilate'
    poi ho dato ok, F7 e dice:

    ------ Inizio compilazione: Progetto: media, Configurazione: Debug Win32 ------
    Compilazione avviata 30/03/2012 16:17:49.
    InitializeBuildStatus:
    Aggiornamento timestamp di "Debug\media.unsuccessfulbuild".
    ClCompile:
    Tutti gli output sono aggiornati.
    media.cpp
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(16): error C2065: 'cout': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(20): error C2065: 'cout': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(21): error C2065: 'cout': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(22): error C2065: 'cin': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(25): error C2065: 'cout': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(34): error C2065: 'cout': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(35): error C2065: 'cout': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(38): error C2065: 'cout': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(39): error C2065: 'cin': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(42): error C2065: 'cout': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(48): error C2065: 'cout': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(49): error C2065: 'cin': identificatore non dichiarato
    c:\users\administrator\dev\mydev\esercizi\media\media\media.cpp(64): error C2065: 'cout': identificatore non dichiarato

    Compilazione NON RIUSCITA.

    Tempo trascorso 00:00:00.98
    ========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========
  • Aggiungi dopo l'include sta riga
    
    using namespace std;
    
  • Funziona!!

    A cosa serve std?

    Grazie
  • Tutte le funzioni di iostream risiedono nel namespace std (sta per standard). Il tuo problema si poteva risolvere in due modi.
    1. Aggiungendo la riga sopra (fa si che il compilatore cerchi nel namespace std tutte le funzioni che non trova altrove)
    2. ad ogni cin, cout aggiungere prima std::
    quindi prendendo una riga a caso il codice diventerebbe
    
    std::cout<<"\n\n Vuoi continuare ancora?";
    
    Scegli te quel che preferisci anche se a mio avviso è meglio la seconda in quanto non carichi tutto il namespace ma solo la funzione che ti serve.
  • Nessuno di questi è inerente al linguaggio C. La guida sul C la trovi quà:
    printf
    Se vedi non esiste il formato %B
    in C++ si fà così
    
    #include <iostream>
    
    bool d;
    
    int main()
    {
    	d=10<2;
    	std::cout << std::boolalpha << d;
    	return 0;
    }
    
  • Grazie per l'ottimo link

    Sempre per printf, quando metto un identificatore di formato diverso da come è definita la variabile, cosa accade? Cosa stampa printf?

    Ad esempio:
    #include <iostream>
    #include <cstdio>
    
    int  y=3,z;
    float x=1.75;
    
    int main()
    	{
    		printf("\n\nz=%d,y=%d,x=%f",z,y,x);
    		z=x/y;
    		printf("\n\nz=%f,y=%d,x=%f",z,y,x);
    		return 0;
        }
    perché restituisce
    z=0,y=3,x=1.75
    z=0.000000,y=0,x=0.000000
    piuttosto che i valori corretti?
    y non è convertito in float(uguale a x)? Perché?

    Grazie ancora
  • Forse posso dare la risposta da solo:
    z è un int, mentre dovrei definirlo come float
    il valore di y si trasforma in float prima della divisione e il risultato della divisione viene assegnato a z che deve essere float per non perdere tutto. Alla fine y comunque rimane un int


    Giusto?
    Però VS non fornisce alcun warning!?! Perché?
  • Qual è la differenza fra Release e Debug?

    Grazie

    p.s.: scusate l'ignoranza
Devi accedere o registrarti per scrivere nel forum
12 risposte