#include <stdio.h>
#include <stdlib.h>
int* createIntArray(int l){
int i;
int *a = (int*)malloc(l*sizeof(int));
for(i = 0; i < l; i++){
printf("Podaj Wartosci: a[%d] : ", i);
scanf("%d",&a[i]);
}
return a;
}
void printIntArray(int a[],int l){
int i;
printf("\nPodane Wartosci to: ");
for(i = 0; i < l; i++){
printf(" %d", a[i]);
}
printf("\n");
}
int main(void){
int l;
printf(" Rozmiar Tablicy: ");
scanf("%d", &l);
if(l > 0){
int a[l];
a[l] = createIntArray(l);
printIntArray(a, l);
}
printf("\n");
return 0;
}
0
1
int* make_int_array(size_t s)
{
return (int*)malloc(sizeof(int) * s);
}
void print(int* arr, size_t s)
{
for(size_t i = 0; i < s; ++i)
printf("%d ", arr[i];
}
int main()
{
int* arr = make_int_array(3);
for(size_t i = 0; i < 3; i++)
arr[i] = i*i;
print(arr, 3);
free(arr);
}
2
Po co Ci to jak w C możesz używać VLA?
#include <stdio.h>
#include <stdlib.h>
void fill_array(int arr[], int size)
{
for(int i = 0; i < size; i++)
{
printf("Podaj Wartosci: a[%d] : ", i);
scanf("%d",&arr[i]);
}
}
void print_array(int arr[], int size)
{
printf("\nPodane Wartosci to: ");
for(int i = 0; i < size; i++)
{
printf(" %d", arr[i]);
}
printf("\n");
}
int main(void){
int size;
printf("Rozmiar Tablicy: ");
scanf("%d", &size);
if(size > 0)
{
int numbers[size];
fill_array(numbers, size);
print_array(numbers, size);
}
printf("\n");
return 0;
}
0
To dodaj wczytywanie do funkcji? Nie rozumiem problemu.
0
no zgadza sie, ale mimo to caly czas cos jest nie tak z przekazaniem gotowej tablicy do funkcj printIntArray.
#include <stdio.h>
#include <stdlib.h>
int* createIntArray(int l){
int i;
int a[l];
for(i = 0; i < l; i++){
printf("Podaj wartosci: a[%d] : ",i);
scanf("%d",&a[i]);
}
return (int*)malloc(l*sizeof(int));
}
void printIntArray(int a[],int l){
int i;
printf("\nPodane wartosci to: ");
for(i = 0; i < l; i++){
printf(" %d", a[i]);
}
printf("\n");
}
int main(void){
int l;
printf("Rozmiar Tablicy : ");
scanf("%d", &l);
if(l > 0){
int* a = createIntArray(l);
printIntArray(a, l);
}
printf("\n");
return 0;
}
1
int* createIntArray(int l){
int i;
int a[l];
for(i = 0; i < l; i++){
printf("Podaj wartosci: a[%d] : ",i);
scanf("%d",&a[i]);
}
return (int*)malloc(l*sizeof(int));
}
Wczytujesz do zupełnie innej tablicy od tej co zwracasz.
1
Dodam może jeszcze do tego co @kq napisał:
malloc
zwraca wskaźnik na przydzielony obszar pamięci który możesz użyć jako tablica, więc musisz najpierw stworzyć ten obszar i przypisać gdzieś ten wskaźnik a dopiero potem go zapełnić.
1
#include <stdio.h>
#include <stdlib.h>
int* createIntArray(int l){
int i;
int *a;
a = (int*)malloc(l*sizeof(int));
for(i = 0; i < l; i++){
printf("Ihre Werte: a[%d] : ",i);
scanf("%d",&a[i]);
}
return a;
}
0
Dziekuje za wskazowki, teraz ten dziala jak nalezy :)