Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem]Visual Studio C++ błąd kompilacji kodu.


Rekomendowane odpowiedzi

Opublikowano

Witam otóż mam problem z kompilacją kodu C++ w Visual Studio 2012.Kod źródłowy działa poprawnie w DEV-C++ ale wywala błą podczas kompilacji w Visualu.

 

 

 

#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdio.h>
using namespace std;
struct TR
{
char imie[10];
char nazwisko[10];
float punkty;
};
int main()
{
int n;
cin>>n;
TR punkty[n];
for(int i=0; i<n; i++)
{
cout << "Wprowadzanie danych " << i+1 << " uczestnika: " << endl;
cout << "Podaj imie: " << endl;
cin >> punkty[i].imie;
cout << "Podaj nazwisko: " << endl;
cin >> punkty[i].nazwisko;
cout << "Podaj punkty: " << endl;
cin >> punkty[i].punkty;
}
for (int i=0; i<n; i++)
cout<<punkty[i].imie<<punkty[i].nazwisko<<punkty[i].punkty<<endl;
getchar();
return 0;
}

 

 

Błąd to :


error C2057: oczekiwano stałego wyrażenia
error C2466: nie można przydzielić tablicy stałego rozmiaru 0
error C2133: "punkty" : nieznany rozmiar

Proszę pomóżcie.

MikartPL.png

Weteran
Opublikowano

Zamiast TR punkty[n]; wstaw TR* punkty = new TR[n]

Wynika to z tego, że wielkość wcześniej zadeklarowanej tablicy musi być znana już przed kompilacją. Jeżeli chcesz zaalokować tablice o niestałym rozmiarze - musisz ją utworzyć w trakcje działania programu.

Mimo tego, że gcc nie zgłosiło błędu, tworzenie tablic w taki sposób jest błędem. Prawdopodobnie tak utworzona tablica przy większym rozmiarze spowodowałaby crasha.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...