Dartron utworzono 22 lutego 2009 utworzono 22 lutego 2009 Witam Mam takie pytanko jak moge uzaleznic wielkosc tablicy od uzytkownika chodzi mi o to zeby User mogl sobie wpisywac jaka duza ma ona byc a potem ja wypelnial tutaj krotki kod tego programiku //program that inputs a series of integers and passes them one at a time to the function#include <stdio.h>#include <conio.h>int num, size;//prototypevoid even(int[], int);//main programvoid main(){ int a[1]/*chodzi mi o ta wielkosc mam ja zadeklarowana jako 1 ale chcialem ja uzaleznic od zmiennej size gdy tak zrobie kompilator mi z errorem wyskakuje*/, i; printf("Please enter how many integers you wanna check: "); scanf("%d", &size); fflush(stdin); //fill the array for (i=0; i<size; i++) { printf("Please enter the number which will be checked: "); scanf("%d", &a[i]); fflush(stdin); } even(a, size); getch();}//function's definition void even(int a[], int size){ int i; for (i=0; i<size; i++) { if (a[i] % 2 == 0) printf("The number %d is even\n", a[i]); else printf("The number %d is not even\n", a[i]); }} // W postach znacznika używa się bez gwiazdek // Lucider[/color]
rafalluz komentarz 22 lutego 2009 komentarz 22 lutego 2009 (edytowane) Interesujący fragment kodu: scanf("%d", &size);a = malloc(size*sizeof(int)); I na koniec: free(a);
Dartron komentarz 23 lutego 2009 Autor komentarz 23 lutego 2009 Interesujący fragment kodu:Dopiero sie ucze wiec moze nie jest on perfekcyjny ale mowia ze najtrudniejsze sa poczatki scanf("%d", &size);a = malloc(size*sizeof(int)); I na koniec: free(a); A tak dokladniej to za co sa odpowiedzialne te komendy ??? Dzieki Lucider za poprawki Niestety w moim przypadku to nie dziala oto lista bledow jakie zostaly znalezione przy kompilacji Error E2048 p9q4xt.c 4: Unknown preprocessor directive: 'inlcude' Error E2268 p9q4xt.c 24: Call to undefined function 'malloc' in function main() Error E2277 p9q4xt.c 24: Lvalue required in function main() Error E2268 p9q4xt.c 31: Call to undefined function 'free' in function main() wynika z tego ze musze jakos zadeklarowac to 'malloc' ale nie mam pojecia co to jest nigdy sie z tym nie spotkalem do tej pory jakis pomysl??
rafalluz komentarz 23 lutego 2009 komentarz 23 lutego 2009 (edytowane) Widać nie masz #include <stdlib.h> na początku. malloc - alokuje tyle bajtów, ile ma podane w argumencie (size*rozmiar_jednego_inta). Zwraca wskaźnik wskazujący na początek zaalokowanego obszaru lub NULL, jak nie wyjdzie (wiec po mallocu powinieneś zrobić obsługę błędów) if(a==NULL){ printf("Za malo pamieci!\n");}else{ //działania z pamięcią} free - zwraca pamięć na końcu, jak już nic z nią nie będziesz robił.
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.