Dynamiczna alokacja pamieci

0

Czy mógłby mi ktoś sprawdzić ten program?

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int a,d,i,j;
float b,c;
float** wsk;
int* z;
printf("Podaj ilosc wierszy: ");
scanf("%d",&a);
printf("Podaj ilosc kolumn: ");
scanf("%d",&d);
wsk=(float**)malloc(a*sizeof(float));
if(wsk==NULL)
return -1;
for(i=0, b=1; i<a; i++, b++)
{
wsk[i]=(float*)malloc(d*sizeof(float));
if(wsk[i]==NULL)
return -1;
for(j=0;j<d;j++)
{
wsk[i][j]=b;
printf("%2.2f ",wsk[i][j]);
}
printf("\n");
}
for(i=0;i<a;i++)
free(wsk[i]);
free(wsk);
system("pause");
return 0;
}
1

Tak.

1

Dzięki za pomoc :)

0

Ale ja nie napisałem że kod jest poprawny. Odpowiedziałem tylko na pytanie "Czy mógłby mi ktoś sprawdzić ten program?". Ktoś mógłby go sprawdzić jakbyś go:

  1. Sformatował
  2. Pokolorował
0
  1. Zamknij to w znaczniki 'code'!
  2. Formatowanie kodu!!!
  3. Nic nie mówiące nazwy zmiennych.
  4. Programowanie w forze - wstawianie zmiennej b do fora jest zupełnie nieczytelne.
  5. Nie wiem po co masz połączone razem zapełnianie tablicy i jej wyświetlanie. To też mało czytelne.
  6. wsk=(float**)malloc(asizeof(float)); powinno być zamienione na wsk=(float**)malloc(asizeof(float*));. Jak już _13th_Dragon napisał: uruchomisz to na 64 bitach i dupa.
  7. Może się nie znam, ale osobiście nigdy nie sprawdzam, czy malloc zwrócił prawidłowy wskaźnik. Zaciemnia to tylko kod, a w praktyce i tak nic nie daje.

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