Kezdőoldal » Számítástechnika » Programozás » Mi a baj ebben a programban,...

Mi a baj ebben a programban, miert erroroziK?

Figyelt kérdés

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <string.h>



struct item{

int number;

char adat[20];

struct item *next;

};


typedef struct item * AUTO;


int kiir(AUTO head);

AUTO createItem(int numb, char *s);

AUTO insertAfter(AUTO act, AUTO elem);

int torolLista(AUTO L);

int torolElem(AUTO L);


int main(){

char szo[50];

AUTO head, act, elem;

clock_t st, fs;


head = act = NULL;

for(int i=0; i<16500000; i++)

{

elem = createItem(i, "elem");

act = insertAfter(act,elem);

if(head == NULL) head = act;

}

printf("durvan 1 gb memoria lefoglalva\n");

getchar();

fflush(stdin);

st = clock();

if (torolLista(head)==1) printf("torolve\n");

else printf("torles kozben hiba tortenhetett\n");

fs = clock();

printf("%lf <- Eltelt ido \n",(double)(fs-st)/CLOCKS_PER_SEC);

getchar();

fflush(stdin);

//----------------------------------------------

head = act = NULL;

for(int i=0; i<16500000; i++)

{

elem = createItem(i, "elem");

act = insertAfter(act,elem);

if(head == NULL) head = act;

}

printf("durvan 1 gb memoria lefoglalva\n");

getchar();

fflush(stdin);

st = clock();

while (head->next != NULL)

{

torolElem(head);

}

printf("torolve egyessevel\n");

fs = clock();

printf("%lf <- Eltelt ido \n",(double)(fs-st)/CLOCKS_PER_SEC);

getchar();

fflush(stdin);

return 0;

}


int kiir(AUTO head){

while (head->next){

head=head->next;

printf("%i %s\n",head->number,head->adat);

}

return 1;

}


AUTO createItem(int numb, char *s){

AUTO elem = (AUTO) malloc( sizeof( struct item));

elem->number = numb;

strcpy(elem->adat,s);

elem->next= NULL;

return elem;

}


AUTO insertAfter(AUTO act, AUTO elem){

if(act==NULL){

act = elem;

}


else {

act->next = elem;

act = elem;

}

return act;

}


int torolLista(AUTO L){

AUTO elem;

while (L->next != NULL){

elem=L;

L=L->next;

free(elem);

}

return 1;

}


int torolElem(AUTO L){

//torli az L utani elemet

if (L!=NULL){

if (L->next->next == NULL){ free(L->next); L->next=NULL;}

else{

AUTO elem;

elem=L->next;

L->next=L->next->next;

free(elem);

}

}

else

{

printf("error");

}

}


2011. dec. 21. 23:23
 1/4 anonim ***** válasza:
Azt, hogy hol kapsz hibaüzenetet és mit, valamint, hogy ez C-e nekünk kell kitatálni?
2011. dec. 22. 09:40
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
Nálam nincs hibaüzenet.
2011. dec. 22. 13:16
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:

C ben.


milyen forditot hasznalsz?

2011. dec. 22. 21:40
 4/4 anonim ***** válasza:

@13:16-os vagyok.

Egyébként @09:40-es jól írja. MINDENT harapó fogóval kell kihúzni belőled? Miért nem tudod leírni normálisan hogy hol van hibaüzenet? Nem vagyok gondolat olvasó, mert sosem tudtam vizsgára a tételek neveit sem.

Fordításnál? Futtatásnál? Arra gondoltam 13:16-kor, hogy végrehajtódik a printf("error") sor, de mi ez barkóba vagy mi a jó élet? Azt nem sikerült reprodukálnom akkor sem ha több példányba elindítom és ekkor nincs elég memória.

Ezek szerint ANSI c lenne, de ez nem ANSI c hanem c++. C fordító azt mondja, hogy :"

1.c: In function `main':

1.c:28: error: 'for' loop initial declaration used outside C99 mode

1.c:46: error: redefinition of 'i'

1.c:28: error: previous definition of 'i' was here

1.c:46: error: 'for' loop initial declaration used outside C99 mode

"

Csak el kell olvasni. For cikluson belül nem lehet deklarálni változót c-ben, c++ -ban igen. g++ -al parancs sorba le lehet fordítani(ahogy tettem), vagy IDE-vel dev c++ vagy geany stb.

2011. dec. 23. 13:56
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!