Program pisany pod DevC++ a Visual Studio

0

Kiedyś napisałem program sprawdzający, czy przynajmniej 60% elementów ciągu jest liczbami parzystymi z przedziału <-10,10>. I teraz pojawia się problem, bo wtedy używałem DevC++ i chyba to wszystko działało (nie pamiętam). Teraz ten sam program uruchomiłem w Visual Studio i sypie błędami przy kompilowaniu. Za Chiny nie wiem jak to teraz poprawić (jestem początkującym, miałem dodatkowo przerwę w nauce C++ i teraz to widać). Liczę na Waszą pomoc.

#include <iostream>  
#include <ctype.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
//////////////////////////
//       FUNKCJE        //
//////////////////////////
 
//LOSOWA LICZBA
int randomNumber(int max)
    {
 
       const float scale = rand()/float(RAND_MAX);
 
       return int(scale*max);
    }
 
//PARZYSTE LUB NIEPARZYSTE
void parzyste(int t[],int wielkosc)
{
	int l_parzyste=0;
	int l_nieparzyste=0;
  for(int i=0;i<wielkosc;i++)
  {
	if (t[i]%2 ==0) 
	{
		l_parzyste++;
	}
	else 
            {
                l_nieparzyste++;
            }
  }
  cout<<"Parzystych: "<<l_parzyste<<endl;
  cout<<"Nieparzystych: "<<l_nieparzyste<<endl;;
 if(wielkosc-l_parzyste <= wielkosc*0.6)
	 cout<<"ponad 60% parzystych"<<endl;
 else
	 cout<<"mniej niz 60% parzystych"<<endl;
}
 
 
 
//////////////////////////
//       PROGRAM        //
//////////////////////////
 
int main()
{
    int wybor;
 
cout<<"Wybierz tryb wprowadzania danych"<<endl<<endl;
cout<<"1 - Automatyczne wypelnienie tablicy"<<endl;
cout<<"2 - Losowe wybieranie liczb"<<endl;
cout<<"3 - Podawanie wartosci z klawiatury"<<endl<<endl;
cin>>wybor;
cout<<endl<<endl<<endl;
		switch (wybor) {
 
//LICZBY GENEROWANE AUTOMATYCZNIE
  case 1: srand(time(0));
 {  
int ciag;
 
	int a0, ak,a=-10,b=10, r, wynik, tablica[1000], pierwszy, drugi;
 
	cout << "Podaj wymiar tablicy" << endl<<endl;
	cin >> ak;
 
	cout << endl<<endl;
	wynik=0;
 
	for(int i=0; i<ak; i++)
	{
        tablica[i]=a+rand()%(b+2);    
 
		cout <<"Tablica o indeksie "<<i<<" wynosi "<< tablica[i] << endl<<endl;
 
    }
 
break;}
 
 
//LICZBY GENEROWANE LOSOWO Z PODANEGO ZAKRESU
  case 2:
{
        int a, b, n, pierwszy, drugi;
        int tablica[1000];
        a = -10;
        b = 10;
// WIELKOSC TABLICY
        cout<<endl<<"Podaj wielkosc tablicy"<<endl<<endl;
        cin>>n;
        cout<<endl<<endl;
 
 
        srand(time(0));
        for (int i = 0; i <= n; i++) 
        {
            tablica[i] = a+(randomNumber(b+5) );
        }
 
 
break;} 
 
 
 
//MANUALNE PODAWANIE LICZB   
  case 3:
{
int x, y, tablica[1000], pierwszy, drugi;
 
cout<<"Podaj liczbe elementow"<<endl;
cin>>y;
cout<<endl<<endl;
x=0;
 
	for(int i=0; i<y; i++)
	{
        cout<<"Podaj wartosc elementu tablicy"<<endl<<endl;
        cin>>x;
        tablica[i]=x;
        cout<<endl<<endl;
	}
	for(int i=0; i<y; i++)
	{ 
		cout <<"Tablica o indeksie "<<i<<" wynosi "<< tablica[i] << endl<<endl;
    }
 
break;}
     }
 
 
//PARZYSTE/NIEPARZYSTE
 
{
 
int a, b, n, pierwszy, drugi;
        int tablica[1000];
        a = -10;
        b = 10;
 
        srand(time(0));
        for (int i = 0; i <= n; i++) {
            tablica[i] = a+(randomNumber(b+5) );
        }
 parzyste(tablica,n);
}
 
 
    system("PAUSE");
    return EXIT_SUCCESS;
}

Komunikaty błędów.

Błędy debugowania

'Project3.exe' (Win32): Loaded 'C:\Users\paul\Documents\Visual Studio 2012\Projects\Project3\Debug\Project3.exe'. Symbols loaded.
'Project3.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Cannot find or open the PDB file.
'Project3.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Cannot find or open the PDB file.
'Project3.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Cannot find or open the PDB file.
'Project3.exe' (Win32): Loaded 'C:\Windows\System32\msvcp110d.dll'. Symbols loaded.
'Project3.exe' (Win32): Loaded 'C:\Windows\System32\msvcr110d.dll'. Symbols loaded.
Run-Time Check Failure #3 - The variable 'n' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'n' is being used without being initialized.
The program '[5100] Project3.exe' has exited with code -1073741510 (0xc000013a).

Błędy buildu

1>------ Build started: Project: Project3, Configuration: Debug Win32 ------
1>  Source.cpp
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(63): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(99): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(145): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(65): warning C4101: 'ciag' : unreferenced local variable
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(67): warning C4101: 'drugi' : unreferenced local variable
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(67): warning C4101: 'r' : unreferenced local variable
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(67): warning C4101: 'pierwszy' : unreferenced local variable
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(67): warning C4101: 'a0' : unreferenced local variable
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(89): warning C4101: 'drugi' : unreferenced local variable
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(89): warning C4101: 'pierwszy' : unreferenced local variable
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(113): warning C4101: 'drugi' : unreferenced local variable
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(113): warning C4101: 'pierwszy' : unreferenced local variable
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(140): warning C4101: 'drugi' : unreferenced local variable
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(140): warning C4101: 'pierwszy' : unreferenced local variable
1>c:\users\paul\documents\visual studio 2012\projects\project3\project3\source.cpp(146): warning C4700: uninitialized local variable 'n' used
1>  Project3.vcxproj -> c:\users\paul\documents\visual studio 2012\Projects\Project3\Debug\Project3.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

dodanie znacznika <code class="cpp"> + sformatowanie pozostałych znaczników - fp

1
int a, b, n, pierwszy, drugi;
        int tablica[1000];
        a = -10;
        b = 10;
 
        srand(time(0));
        for (int i = 0; i <= n; i++) {
            tablica[i] = a+(randomNumber(b+5) );
        }
 parzyste(tablica,n);
}

Ile wynosi n? Po co zmienne pierwszy, drugi? Nieużywane zmienne powtarzają się w kilku miejscach. Korzystaj więcej z funkcji. Zamiast komentarza opisującego co dany kawałek kodu robi, daj funkcję z nazwą która to mówi, dużo łatwiej się wtedy czyta kod.
Błędów kompilacji nie ma, jedyny błąd jaki jest to ten z n, ale on ujawnia się dopiero po uruchomieniu programu.

1

The variable 'n' is being used without being initialized. :

int a, b, n, pierwszy, drugi; // n zadeklarowana ale nie zainicjalizowana
        int tablica[1000];
...
        for (int i = 0; i <= n; i++) { // lecisz do tej nie zainicjalizowanej n
            tablica[i] = a+(randomNumber(b+5) );

Podobnie z pozostałymi błędami.

0
Zellus napisał(a):
int a, b, n, pierwszy, drugi;
        int tablica[1000];
        a = -10;
        b = 10;
 
        srand(time(0));
        for (int i = 0; i <= n; i++) {
            tablica[i] = a+(randomNumber(b+5) );
        }
 parzyste(tablica,n);
}

Ile wynosi n? Po co zmienne pierwszy, drugi? Nieużywane zmienne powtarzają się w kilku miejscach. Korzystaj więcej z funkcji. Zamiast komentarza opisującego co dany kawałek kodu robi, daj funkcję z nazwą która to mówi, dużo łatwiej się wtedy czyta kod.
Błędów kompilacji nie ma, jedyny błąd jaki jest to ten z n, ale on ujawnia się dopiero po uruchomieniu programu.

Mógłbyś wyedytować kod. Poddaje się, nie wiem jakim cudem to działało rok temu.

0

Dzięki. Jeszcze jedno.

Dlaczego jak wezmę opcję "automatyczne wypełnienie liczb" to wypełnia samymi ujemnymi?

1 użytkowników online, w tym zalogowanych: 0, gości: 1