Masz w tym jeden błąd - po pierwszej instrukcji w pętli licznik będzie zawsze równy x-1. W związku z tym, pętlę musisz wykonywać tylko dopóki x>0. Zwracam tylko uwagę, że alokacja i zwalnianie pamięci zajmuje czas. Jeżeli chcesz zaimplementować coś na kształt stosu, to wydajniej od pomniejszania i powiększania zalokowanego obszaru jest alokować miejsce...
Tak, bo w rozwiazaniu B masz tablice wskaznikow, i pod kazdy z tych wskaznikow mozesz wstawic jedna strukture (jak masz u siebie w kodzie tablica[0]=malloc(sizeof(osoba)); ) ale nic nie stoi na przeszkodzie aby podstawic tam cala tablice (tablica[0]=malloc(sizeof(osoba) * 10); ).
z kolei w ANSI służyła do tego funkcja malloc
Witam! Hmm... Na początku to trochę rozwlekłeś strukturę. Niepotrzebnie pola: imię, nazwisko, dzień, miesiąc, rok zdefiniowałeś jako tablice dwuwymiarowe a konkretnie niepotrzebnie dodałeś indeks 1 czyli tam, gdzie masz po 10. Powinieneś zadeklarować zgodnie z sugestią Kolegi krru czyli: [syntax=c]struct dane { char imie[30]; char nazwisko[30]; int...
bezpośredniego skutku zwykle nie ma (sizeof(char)==1), ale zamiast -zmieniłem nazwy ... read na read1 Ja bym zmienił na znaczącą, oddająca intencję projektową. Coś w rodzaju read_and_trim albo read_from_line czy read_one_from_line Nazwa która wyznacza funkcjonalność pomaga (nawet w projekcie jednoosobowym) się zdyscyplinować. A nie ukrywajmy, funkcja...
Utworzyłeś wektor o SIZE_Y elementach a wypełniasz SIZE_X pozycji
Bo wogóle pierwszy malloc nie może brać rozmiaru 6*sizeof(int) ale 6*sizeof(struct bazadanych *)
Witam serdecznie. Przedstawię tylko część projektu z którą nie mogę sobie poradzić. Otóż: 1.Użytkownik podaje ile liczbę n (która oznacza ile liczb za chwilę poda) 2.Chciałem utworzyć tablicę jednowymiarową o długości n, żeby w każdej komórce umieścić wartoś, w celu późniejszego wykorzystania. 3. Proble jest taki, że długość tablicy musi być z góry...
W zasadzie tak nie należy robić. Dwie gwiazdki obok siebie to już jest podejrzane, a le trzy.... ;) Ale jeżeli chodzi tylko o gimnastykę z językiem C, to trzeba to zrobić tak: Dodano po 28 Tak, taka jest składania. Zmienna tablica wewnątrz funkcji funkcja() jest wskaźnikiem na zmienną tablica z funkcji main() . Trochę mylące jest użycie tej samej nazwy...
Napisałem prosty kalkulator operujący na macierzach lecz nie mogę poradzić sobie z pewnym problemem. Program czyta dane z pliku, który wygląda następująco 3 3 1 2 3 4 5 6 7 8 9 3 3 1 2 3 4 5 6 7 8 9 pierwsze dwie cyfry to informacje o rozmiarze macierzy co odpowiada zmiennym w1, k1 oraz dla drugiej macierzy w2 i k2. Na początku definiuje rozmiar tablic...
Witam! Zastanawiam się nad sposobem tworzenia tablicy dynamicznej w C++ Zgodnie z wszelkimi opisami jakie znalazłem, tablicę dwuwymiarową tworzymy tak: int w=10, k=10; int **tab = new int *[w]; for ( int i = 0; i < w; ++i ) tab[i] = new int [k]; co jednak stoi na przeszkodzie, żeby tablicę taką deklarować tak: int...
Witam. Mam pytanie: W DEV C++ takie coś bierze bez bólu int ile_znakow = 1; unsigned char cT1 [ile_znakow+1]; a jak to zrobić w Builderze?? wywala błąd: Constant expression required. Czy to znaczy że nie obsługuje tablic dynamicznych???
Witam. Chce zadeklarowac sobie tablice 2-wymiarową, dla ktorej znam tylko jeden wymiar na początku programu. Logiczne wiec, że skorzystam z operatora new. Oto mój kod: char **tablica; for(i=0; i < zmienna; i++) { tablica[i] = new char[3]; } Program kompiluje się poprawnie, ale potem po wywołaniu - zawiesza się. Uzywam...
W tej pętli zliczającej niepotrzebnie wczytujesz liczbę do w, przez to "gubisz" liczbę elementów już wczytanych. Chyba jeszcze nie miałeś dynamicznego alokowania pamięci, nie można zrobić czegoś takiego: int tab[w][w]; ponieważ rozmiar deklarowanej tablicy w ten sposób musi być już znany podczas kompilacji, a wartość w jest dopiero znana...
Między innymi dla tego że nowy wpis dodawałeś do oryginalnej tablicy, zapisując go poza zaalokowanym obszarem.
h-doc: jeżeli yy jest równe np. 10, to ile pamięci przydzieli malloc?
struct Punkt *punkty=malloc(ile*sizeof(struct Punkt));
W funkcji głównej otwórz plik do czytania ("r") [syntax=c] FILE *source source = fopen("Zrodlo.txt", "r"); //[...] kod programu, nie zapomnij zamknąć pliku fclose(source); [/syntax] Następnie spróbuj użyć funkcji fgets(); czyta ona plik do pierwszego znaku nowej linii, bądź znaku końca pliku. Następnie umieszcza je w tablicy. Więcej o funkcji [url=http://pl.wikibooks.org/wiki/C/fget...
ale czy znajdziesz biblioteke z malloc dla avr?? jakos mi sie wydawalo zawsze, ze avr nie udostepniaja opcji dynamicznej alokacji pamieci... a sama alokacja, to bedzie np cos takiego... int rows = 6, cols = 5; double **a; a = malloc (rows * sizeof (double *)); if(!a) abort(); for (i = 0; i < rows; i++) {...
Poprawiłem kod dla czytelności, dopisz sobie resztę. Nie kompilowałem ze względu na niekompletny kod, liczyłem na swoją wiedzę: [syntax=c]#include <ctype.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 80 #define END "koniec" // struktura liczby calkowitej z iloscia cyfr do...
Z czym masz problem? Do tworzenia dynamicznych tablic w C masz malloc.
Coś naplątałeś... Aby uzywać malloca bez dziwnych errorów, musisz zadeklarować odpowiednią ilość miejsca na stertę . Co z tego, ze twoje zmienne zajmują niewiele ramu, skoro najpewniej ustawiles sobie parę kB sterty, i gdy przekroczysz te pare kB, program ci sie natychmiast wykrzaczy, bo oczywiście najpewniej nigdy nie sprawdzasz, czy malloc przypadkiem...
Moim zdaniem AVR to stanowczo za małe mikrokontrolery, by zarządzać w nich dynamicznie pamięcią. Już sama funkcja malloc zajmie całkiem sporo pamięci FLASH. Pamięci RAM też w większości AVR nie ma jakoś wyjątkowo wiele, by było czym zarządzać. Inna sprawa, że malloc/calloc/realloc i free mają zastosowanie do tablic, których rozmiary nie są znane w trakcie...
Szybka odpowiedź. Trzeba Ci wiedzieć jak działa procesor i Memory Management Unit (MMU). Działa tak, że buduje z kawałków pamięci fizycznej, pamięć wirtualną. Z kawałków o ustalonej długości, im mniejsze kawałki tym lepsza oszczędność pamięci ale większa tablica mapowania fizycznej pamięci na wirtualną i kupa innych kłopotów. Każda aplikacja porusza...
To jest C, a nie C++ Wszystko, co alokujesz przez malloc() musisz zwolnić przez free()
http://pl.wikibooks.org/wiki/C/malloc tu jest wszystko opisane
Nie przejrzałem całego kodu, ale od razu rzuca się w oczy błąd, na który kompilator powinien zwrócić Ci uwagę: double *oout = malloc(511 * sizeof(double)); // w C double *oout = new double[511]; // w C++
1. Wczytujesz dane funkcją scanf() do stringa 2. Parsujesz dane i określasz wielkość tablicy 3. Na podstawie wyznaczonej wielkości tablicy deklarujesz wskaźnik do niej i alokujesz odpowiedni obszar pamięci przy pomocy malloc()
Masz tendencję do pisania kodu w sposób uniemożliwiający jego łatwą analizę: - nigdy nie grupuj kilku instrukcji w jednej linii kodu - to formalnie dopuszczalne, ale kompletnie nieczytelne - korzystaj ze spacji do odseparowania wizualnie operatorów w wyrażeniach (z wyjątkiem -> , i * jako operatora wyłuskania) Teraz wracając do Twojego problemu: 1....
Potrzebuję w projekcie użyć dynamicznej alokacji pamięci, niestety malloc() zawsze zwraca mi NULL. 1. Proponuję nie używać malloc w projektach embedded. 2. Najprawdoposobniej sbrk jest tylko "kadłubkowa" dla zapernienia linkowania się kodu. Co zrobić: 1. Jeżeli się już uparłeś na "malloc" to proponował bym freeRTOS-a z jego implementacją heap4.c albo...
Witam! mam Takie zadanie."Napisz funkcję dokonującą zamian miejscami elementów o indeksach parzystych z elementami o indeksach nieparzystych(przykładowo:element 0 z 1, 1 z 2 , 2 z 3 , 4 z 5 itd) UWAGA Tablica powinna byc tworzona dynamicznie i nei moze byc deklarowana jako zmienna tylko jaka Wskaźnik." Przejrzałem instrukcje c++ i nigdzie nie znalazłem...
Jeśli chcesz to zrobić w strukturze, która pojawia się gdzieś w programie i miec wpływ na wielkość tablicy w każdym egzemplarzu struktury, eleganckim rozwiązaniem jest dynamiczne przydzielenie pamięci. struct pole{ int r,p,q,nr; }; struct Nadrz_dane{ pole *wezel; int MAX; }; main() { Nadrz_dane drzewo; int liczba_pol...
Proszę bardzo, to jest jedna z tych bardzo prostych implementacji, ograniczona do minimum. Dodawanie elementów wypełnia tablicę o określonym rozmiarze (STACKARRAYMAX elementów). Gdy zabraknie miejsca, nowa tablica zostaje zaalokowana i dopisana do końca listy. Ściągając elementy ze stosu, wyszukiwana jest ostatnia tablica listy z conajmniej jednym elementem....
A to w tym przypadku musisz dynamiczne zarezerwować pamięć pod tablicę znaków używając funkcji 'malloc(...)' podając jej ilość znaków do zarezerwowania (plus jeden zapasu na '\0'). Ale nie zapomnij potem w destruktorze zwolnić tej pamięci funkcją 'free(...)'.
We "współczesnym" c++ (masz takie w devc++) biblioteka standardowa oferuje tzw. kontenery, niektóe z nich potrafią się zachowywać jak tablica dynamiczna. W twoim przypadku możesz skorzystać np. z kontenera typu vector, krótki opis znajdziesz tutaj: http://bielsky.elektroda.net/vector.html Aha...i jeszcze jedno: czyli wynika z tego że w C++ nie ma odpowiednika...
Proba zaalokowania wiecej niz jednego elementu klasy macierz konczy sie niepowodzeniem, tylko jeszcze nie widac efektow. Zmienna zadeklarowana jako class macierz **A jest wskaznikiem na wskaznik, czyli etykieta, ktora wskazuje na jakis adres w pamieci, pod ktorym przechowywany jest jakis inny adres (elementu docelowego). Inaczej jest to tez jednoelementowa...
Witam Uczę się o dynamicznej alokacji pamięci, i nie wiem czemu program nie działa. Funkcja ma wypełnić tablicę dwuwymiarową kolejnymi liczbami, a następnie zwrócić ją do maina. Bardzo proszę o wskazówki: [syntax=c] #include<stdio.h> #include<stdlib.h> int **funkcja(int n); int main(void){ int n =5,i,j; int **tablica; tablica=funkcja(n);...
Niezupełnie, to jest przecież stary dobry nieużywany już Pascal. Tablicą dynamiczną nazywano tablicę utworzoną poprzez New. Jej rozmiar teoretycznie może się zmieniać, ale jeżeli jest użyta stała to zmienia się tylko na etapie kompilacji. Czyli zwykła tablica wskaźnikowa o rozmiarze N elementów (moim zdaniem). W Pascalu Borlanda miało to nawet pewien...
struktura moja wygląda tak i koniec: struct KrawedzGrafu{ int odwezla; int dowezla; int waga; }; Nie mogę jej zmieniać. Za dużo roboty by zmieniać całe ponad 100 linijek programu. To coś jest nie tak z programem. Struktury są między innymi po to, żeby można było coś do nicd dodać, a reszta programu ma tej zmiany nie "zauważyć". Najbardziej brutalna...
Mam pewien problem z wskaźnikami do dynamicznej tablicy. Tablicę tworzę tak: [syntax=c] int **tablica; //n - kolumny, m - wiersze tablica = (int**)malloc(n * sizeof(int*)); for(i=0; i<n; i++){ *(tablica+i)=(int*)malloc(m*sizeof(int))... } [/syntax] Następnie chcę utworzyć wskaźnik do tej tablicy i wywołać funkcję (wypelniajaca tablice zerami)z tym...
Witam, Zmiennych się nie tworzy, tylko deklaruje. Jeśli wiesz, ile maksymalnie razy wykona się pętla, to użyj tablicy: char tablica[ROZMIAR]; int i; for (i = 0; i < ROZMIAR; ++i) tablica[i] = ... Oczywiście ROZMIAR nie może być zmienną. Jeśli nie wiesz, albo Ci szkoda tyle pamięci na raz, to tablicę przydziel dynamicznie ->...
Albo używa się C-towych funkcji malloc, calloc, realloc, free itp, albo new/delete. Nie wolno tego mieszać. Używając new/delete niestety pozostaje jedynie utworzenie owej tablicy i skopiowanie. W podanym przykładzie masz 2 błędy - nie kopiujesz to nowej tablicy tab i próbujesz reallocować tab a chyba chciałeś tab[i]. No i jeszcze coś - ostatni wiersz...
błąd jaki zauważyłem to definicja "main" powinna być z dwoma argumentami, czyli "int main(int argc, char*argv[])". Wynika to z faktu, że biblioteka SDL2 podmieni ją na swoją. Dokładniej to SDL definiuje makro "main" jako "SDL_main" i jest to typ funkcyjny dwuargumentowy "int(*)(int,char**)". goto? Niektórzy tego nie lubią i uważają za zło. Jeżeli to...
Podobno w starych czasach, gdy moc obliczeniowa nie była największa i algorytmika, miała spore znaczenie na czas realizacji programu, to w kwestii wykorzystania pamięciożernych operacji na dynamicznych tablicach czy strukturach, było zapatrywanie by robić coś takiego w C z użyciem malloc/free , pewnie nadal tak jest, jednakże przy współczesnej technologii...
gdzie może być błąd wychodzą dziwne liczby Z tego co tu można wyczytać ze schematu wynika, że ma zostać utworzona tablica dynamiczna o rozmiarze zgodnym z wprowadzaną liczbą. Następnie powinna ona zostać wypełniona odpowiednimi wartościami (liczbami). Nie znam się na C, ale wygląda jakby brakowało alokacji pamięci na tę tablicę i pętli wstępnej do...
Z tego co widzę w listingu wysyłającym dane przez UART masz zmienną koniec_kolejki, która to nigdzie nie jest funkcji podana. Jeśli jest to zmienna globalna, to musisz na takie zmienne uważać... Masz także tablicę dynamiczną *bajty, której nigdzie nie widzę alokacji. Jesteś pewien, że alokujesz pamięć dla jej wskaźnika (malloc)? Jeśli tak, to na jaki...
A jaki jest dokładnie problem ? Może to nie jest wina po stronie tego kawałka kodu co przedstawiłeś. Ogólnie inkrementacja w C nie zawodzi. Nie znam C za dobrze ale Twój sposób zainicjowania struktury wzbudził we mnie kontrowersje. Zawsze byłem przyzwyczajony do używania funkcji malloc w takich przypadkach. liczba_nosnikow *ln = (liczba_nosnikow*)malloc(siz...
Kompilator nie przyjmuje bo masz zupełnie pomylone typy. Może po prostu uprościć to wszystko do: char * tab=(char *) malloc(wymiar_x * wymiar_y); a odwoływać się przez: tab[wymiar_x*x + y]
char st1 to nie zadziala. tablice nalezy inicjowac rozmiarem znanym podczas kompilacji. masz wiec dwa wyjscia: 1. albo rozmiar na sztywno 2. albo szybki kurs uzycia funkcji malloc i obslugi dynamicznego przydzialu pamieci (obstawiam, ze jak procek nie ma pozadnej ilosci RAMu, to nawet nie ma co probowac) x = 53.7; <-------------------- tu muszę...
Witam. Mam wykonać polecenie: 'Stworzyć strukturę zawierającą dynamicznie zaalokowaną tablicę dwuwymiarową i jej wymiary. Tablica dwuwymiarowa jest reprezentowana przez odpowiedni wskaźnik.' Oprócz tego jeszcze zwolnić zaalokowaną pamięć. Oto co napisałem.. byłbym wdzięczny gdyby ktoś sprawdził czy dobrze to zrobiłem i ewentualnie pokazał mi błąd. #include...
Problem jest tego rodzaju, że po pierwsze trzeba czytać ze zrozumieniem treść zadania, ale co gorsza, trzeba też umieć zdefiniować treść zadania tak, aby była zrozumiała i jednoznaczna. Z tym drugim jest poważny problem. 1. Po pierwsze liczby a i b raczej nie mają nic wspólnego z wymiarami tablicy, ani też nie powinny się w niej znaleźć. Być może intencją...
iosteam na Atmega32? Nie do końca chyba rozumiem: jak przeczytałeś je i nigdzie jeszcze nie wrzuciłeś, to raczej już ich nie masz? A jak wrzuciłeś, to ciągle jeszcze potrzebujesz nowej pamięci dla nich? Prawidłowo, to chyba musisz mieć jeden bufor na najdłuższy łańcuch, a potem alokować dynamicznie miejsce na ten łańcuch i kopiować. Chyba, że chcesz...
Wprowadziłem takie zmiany, kompiluje się i tym razem taki błąd: _CrtIsValidHeapPointer(pUserData) [syntax=cpp] #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include "stdlib.h" #include "time.h" typedef struct element { int pole1; char pole2; double pole3; }el_nowy; el_nowy** losowanie(int N) // pobiera jako argument liczbe N struktur, ktore maja...
myślałem o instrukcjach wybory switch(x) w której to argument x byłby poziomem w menu, a w tych switch(x) były by zaś takie same switch(y) gdzie y to byłby poziom podmenu ale niewiem czy takie coś to dobre myślenie. Za dużo niepotrzebnego kodzenia, lepszy wyborem jest pewna struktura opisująca obiekt, bardzo przydatne wskaźniki na funkcje, wskaźniki...
Witam tworzę tablicę dynamiczna 1 wymiarową a później wywołuje funkcje która mi zwraca k. inkrementuję k-ty element tablicy rozkład. chcę teraz wyświetlić zawartość tablicy rozkład i qpa.... wywala multum 0 i wyskakuje błąd windows... co jest nie tak? init(n, E, &total); int *rozklad; rozklad=(int *) malloc(total *sizeof(int));...
malloc tablica tablica dynamiczna dynamiczna tablica
skaner sterownik uszkodzony konwerter audio dioda power mrugać niebieski
ebl21 wzmacniacz liczników przedpłatowy
Gdzie kupić programator do pralki Amica AWG6122SD? Czujniki ruchu wpięte z lampą - jak działają?