(aujourd'hui je suis bien luné, je vais tout bien espliquer

)
Deja, ta premiere erreur vient du fait que le compilateur refuse d'allouer un tableau avec un type non-entier (dans ton exemple, N est declaré comme double) : tu ne peux pas allouer un tableau de 3.1 éléments, donc plutot que de faire une cuisine dans ton dos pour essayer d'arrondir vers l'entier le plus proche ou un truc comme ca, le compilateur refuse au cas ou tu te serais trompé
A partir de la la solution la plus simple (mais la moins bonne, je vais expliquer pkoi) serait de tout simplement declarer N comme entier, et de remplacer l'affectation N = pow(2,n) par N = (int)pow(2,n). Mais ce n'est pas une bonne solution, parce que pow() est une fonction qui convertit d'abord ses arguments en flottant (type 'double'), puis qui fait des calculs sur les flottants, renvoie un flottant, et le '(int)' devant le pow convertit ce flottant en entier. Tout ca, non seulement c'est beaucoup de travail pour le pauvre petit processeur (mais ca, ca n'est pas forcement grave), mais surtout les conversions entier->flottant ont des gros risques d'erreurs d'arrondi! A ce moment-la, tu te dis "pas grave, qu'est-ce qu'une erreur de 0.001 sur pow(2,5)=32 pourrait bien faire ?" Hé ben pas de chance, les arrondis en C/C++ se font vers 0 : ca veut dire que si pow(2,n) te renvoie 31.999, alors N va valoir 31 et pas 32! Ca, ca veut dire que ton programme risque de planter, ou pire de renvoyer un resultat faux, ou encore pire d'avoir une faille de sécurité qu'un pirate pourrait exploiter

(note : je ne dis pas que ca arrivera tout le temps, c'est probable que (int)pow(2,5) te renvoie 32 et pas 31, mais rien n'empeche qu'un jour en changeant de compilateur par exemple ca se mette a te renvoyer 31 sans que tu n'aies rien fait!)
Moralité : ne jamais passer par des flottants a moins d'avoir une tres bonne raison de le faire. Mais alors comment faire dans ce cas precis ? C'est tres simple, pour un ordinateur calculer des puissances de 2 (et meme, plus generalement, multiplier par une puissance de 2) c'est tres facile : comme il calcule en binaire, il suffit qu'il ecrive en binaire un '1' avec cinq '0' apres pour calculer 2^5 (de meme que comme nous on calcule en base dix, 10^5 = 100000 s'ecrit '1' avec cinq '0' apres). Et il y a un operateur special pour lui dire de rajouter n '0' a la fin d'un nombre : c'est << (decalage a gauche). Donc la on part du chiffre '1', et on rajoute n '0' derriere : ca fait (1<<n) = (2 puissance n)

Donc la c'est tres simple, il suffit d'ecrire N = 1<<n et c'est fini ^^ (et la tu n'auras aucun probleme d'arrondi, et en plus l'ordinateur l'executera tres rapidement)