Język C błąd kompilacji C2240 cannot convert to

0

Cześć,
w następującym kodzie w podkreślonej i pogrubionej linijce występuje mi błąd (C2240 cannot convert to). Proszę o pomoc.

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>


int main()
{
	int N;
	printf("Podaj liczbe calkowita nie wieksza niz 10:\n");
	scanf("%d",&N);
	while(N>10)
	{
		printf("Liczba nie moze byc wieksza niz 10\n");
		scanf("%d",&N);
		if(N>10)
		{
			continue;
		}
	}
	double *w;  
	w = (double*)malloc(N*sizeof(double)); 
	printf("Podaj %d wartosci skladowych wektora\n",N);
	for(int i=0;i<N;i++)
	{
		scanf("%lf",&w[i]);
	}
	double **A;
	*A=(double**)malloc(N*sizeof(double*); // <----------------------------------- tutaj
	for(int i=0;i<N;++i) 
	{
		A[i] = (double*)malloc(N*sizeof(double));
	} 
	srand(time(NULL));
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<N;j++)
		{
			A[i][i]=(double)rand()/RAND_MAX;
		}
	}
	printf("%lf\n",A[0][0]);
	
	for(int i = 0; i<N; ++i) 
	{
		free(A[i]); 
	}	
	free(A);
	free(w);
	wait();
}
2

malloc(N*sizeof(double*); - zgubiłeś jeden nawias zamykający.

3
double **A;
*A=(double**)malloc(N*sizeof(double*);

Zastanów co chcesz tutaj zrobić. Przypisujesz zaalokowaną pamięć do dereferencji A, które nie ma żadnej wartości. Zakładam, że chciałeś napisać

double **A;
A=(double**)malloc(N*sizeof(double*);
0

Nie do końca rozumiem. W tym programie próbuje zadeklarować tablice dwuwymiarową o wymiarach NxN, którą następnie chce zapełnić wartościami z przedziału <0,1>.
Kiedy napisze:

A=(double**)malloc(N*sizeof(double*));

Nie osiągnę swojego celu

0

Pierw alokujesz tablicę wskaźników, a dopiero potem poszczególne tablice. Więc jest to nie tylko zgodne z tym celem, ale nawet niezbędne, o ile nie bawisz się w enkodowanie wielkości tablicy w typie.

0

Dzięki, już zrozumiałem

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