y.....8
#programowanie #cpp #pg

Byłem u prowadzącego na konsultacjach i zaczęło mi się trochę plątać,mając podane definicje,mamy zaznaczyć poprawne przypisania.

const int MAXN=8;
float x = 2.0;
double A[MAX
N];

using namespace std;
int main()
{
a) A[6]=sin(x)+x;
b) *(A+1)=.333;
c) * A =.333;
d) *A+1 = .333;
e) * A +1 =x;
f) *(A+1)=x;
}

Na pewno przejdzie sinus,* A=.333; *(A+1)=.333;

Ale prowadzący twierdził,że przejdzie też to * A+1=.3333;

w Codeblocks mi się to ostatnie nie kompiluje,jak myślicie?
  • Najlepsze
  • Wszystkie komentarze
lionbest
@Piotrek1772: Taaaaaaaaa bo codeblocks kompiluje kod X-D
Piotrek1772
Piotrek1772
  • adult
4
Treść przeznaczona dla osób powyżej 18 roku życia...
inplaz
@yras8: na oko d) i e) się nie skompilują. reszta jest ok
P.....a
P.....a
@yras8: A by przeszło, gdyby sin() był zadeklarowany gdzieś
B to klasyczna arytmetyka wskaźników i wyłuskanie, więc jest OK
C to wyłuskanie pierwszego elementu; to samo co A[0], więc też OK
D nie ma szans, bo *A+1 to rvalue
E to samo (białe znaki nie mają tu znaczenia)
F analogicznie do B też jest OK
P.....a
P.....a
@yras8:

prog.cpp: In function ‘int main()’:
prog.cpp:9:11: error: lvalue required as left operand of assignment
*a + 1 = .333;
Passer93
@yras8 witamy na uczelni. Jeśli coś sobą reprezentuje to będzie wdzięczny za zwrócenie uwagi.
JakTamCoTam
@yras8: to jest w zasadzie tylko ciekawostka ceplusplusowa, takich cudów się nie robi w normalnych sytuacjach xD. Sam nie jestem pewien i dla pewności sprawdziłem na online compilerze:
1. To działa normalnie. Sumuje sinusa i iksa. (musisz miec tylko biblioteke np cmath)
2. Też działa normalnie. Jest to jako A[1]. O co chodzi? Nazwa tablicy bez operatora dostępu do tablicy (czyli tego "[]") mówi nam o wskaźniku, który w pamięci
lionbest
@Passer93:

Jeżeli coś sobą reprezentuje...


Wykładowca informatyki na polskiej uczelni coś sobą reprezentuje...

Pomijając kilka wyjątków, które można policzyć na palcach jednej ręki, to dobry żart jest.
y.....8
@Piotrek1772: okej,ale egzamin jest pisemny,nie na pc,powiesz mi z głowy które przypisania są poprawne?
Piotrek1772
@yras8: C++ skończyłem używać po polibudzie, ale napisz post na 4programmers.net. Myślę, że uzyskasz odpowiedź szybciej jak tu.
joolekk
joolekk
@yras8: oczywiście że z głowy mało kto powie, jeśli nie ma do czynienia na co dzień z tym językiem. XD
y.....8
@inplaz: według prowadzącego D jest okej.
inplaz
@yras8: a e) już w porządku? bo to praktycznie to samo xD. nie chce mi się odpalać kompilatora ale wyluskanie ma wiekszy prorytet od dodawania więc masz po lewej prvalue do ktorego nie mozna nic przypisac
P.....a
P.....a
@yras8: Sprawdź na szybko na ideone.com
y.....8
nie ,według niego E nie przejdzie
@inplaz
y.....8
konto usunięte Autor
  • adult
0
Treść przeznaczona dla osób powyżej 18 roku życia...
P.....a
P.....a
@yras8: Pokaż mu wynik kompilacji ( ͡° ͜ʖ ͡°)
Kaczus2B
Kaczus2B
@yras8: nie przejdzie d) i e)
z ciekawostek natomiast przejdzie cos takiego:

1[A] = 3.1;
bo to to samo co A[1] = 3.1;
Passer93
@lionbest zawsze warto mieć nadzieję, tacy też są, nie generalizujmy