C++ Program na wczytanie x liczb


(Macbaz) #1

Program tworzony w Dev-ie ale na zajęciach musimy go odpalić w Visualu stąd moja Wielka Prośba.

Witam mam stworzony kod i jak wklejam go do Microsoft Visuala wyskakuje mi błąd , że brak nagłówka.

#include 

#include 

#include 

#include 

#include 



using namespace std;


float zaokraglenie(float number){

    number *= 100;

    number = ceil(number);

    number /= 100;

    return number;

}


float srednia(float *tab, int size)

{

 float sr=0;

 for(int x=0;x
 return zaokraglenie(sr/size);

}


float sum(float *tab, int size){

      int i=0;

      float suma;

      for (int i=0; i
        suma += tab[i];

      }

      return zaokraglenie(suma);

}


float min(float *tab,int size){

      int i=0;

      float min = tab[1];

      for(int i=0;i
                  if(tab[i]
                   min=tab[i];

                   }

              }

              return zaokraglenie(min);

      }


float max(float *tab,int size){

      int i=0;

      float max = tab[1];

            for(int i=0;i
                  if(tab[i]>max){

                   max=tab[i];

                   }

              }

              return zaokraglenie(max);

      }



int main(){


    int i=1, liczb, liczby;


    int n=0;

    ifstream plik;

    plik.open("dane.txt");


    plik>>n;


    float *tablica=new float[n];

    for(int i=0;i

     plik>>tablica[i];

     }

    int suma=0;


    ofstream wyniki("wyniki.txt");

        wyniki<<"Suma: "<
        wyniki<<"Srednia: "<
        wyniki<<"Min: "<
        wyniki<<"Max: "<
    wyniki.close();

}

(Sawyer47) #2

Nie posiadam wymienionego IDE, ale 2 sugestie - cmath a nie math.h (skoro to C++) oraz po co dołączać conio.h skoro nie używasz?


([alex]) #3

Wyskakuje ci też jakiego nagłówka brak. Dopisz ten nagłówek.


(Macbaz) #4

Po dopisaniu nagłówka: #include "stdafx.h"

wyskakuje komunikat:

Compiling...

3.cpp

C:\3\3.cpp(28) : error C2374: 'i' : redefinition; multiple initialization

        C:\3\3.cpp(26) : see declaration of 'i'

C:\3\3.cpp(37) : error C2374: 'i' : redefinition; multiple initialization

        C:\3\3.cpp(35) : see declaration of 'i'

C:\3\3.cpp(48) : error C2374: 'i' : redefinition; multiple initialization

        C:\3\3.cpp(46) : see declaration of 'i'

C:\3\3.cpp(68) : error C2374: 'i' : redefinition; multiple initialization

        C:\3\3.cpp(59) : see declaration of 'i'

C:\3\3.cpp(80) : warning C4508: 'main' : function should return a value; 'void' return type assumed

Error executing cl.exe.


3.exe - 4 error(s), 1 warning(s)

([alex]) #5

Chodzi o niezgodność VS ze standardami. Jeżeli masz:

int i=0;

for(int i=5;i<10;++i) { }

for(int i=10;i<15;++i) { }

To normalny kompilator traktuje to jako trzy różne zmienne pierwsza nadrzędna w tym zakresie, druga istnieje tylko w pierwszej pętli, trzecia tylko w drugiej pętli. Natomiast WC traktuje to jako zmienne w tym samym zakresie, więc deklaracja int i=5; w środku for'a koliduje ze zmienną int i=0;

Musisz usunąć niepotrzebną deklarację zmiennej "i" na początku funkcji sum(), min(), max() i tak nie używasz tej zmiennej.


(Fiołek) #6

@[alex]: co ty gadasz? VC rozróżnia zakresy i to będzie się kompilować.

Ten kod co podałeś kompiluje się w VS 2008 EE bez problemu(tylko z ostrzeżeniami).


([alex]) #7

Może nowsza wersja ...

Sprawdź poprzednie :smiley:


(Fiołek) #8

VS 8 ma już 5 lat, a na nim "działa". VS 9 ma 2 lata, więc młody też nie jest. VS6/VS.NET już się od dłuższego czasu nie używa.


([alex]) #9

VS 2008 - 5 lat, czyżby pojawiło się w 2005 roku?


(somekind) #10

VS 7.0 == VS 2003

VS 8.0 == VS 2005

VS 9.0 == VS 2008


(Grzech U007) #11

Tworzysz projekt Win32 Console i tam piszesz swój kod pod dyrektywą #include "stdafx.h" (nie kasujesz tego).

Jeśli chcesz pisać bez tych "dodatków" tworzysz pusty projekt Empty Project, następnie dodajesz do niego pusty plik .cpp i tam już możesz pisać, że tak powiem normalnie. Poza tym w niektórych funkcjach niepotrzebnie deklarujesz zmienną i. Wystarczy deklaracja w pętli.