Mi a baj ebben a programban, miert erroroziK?
#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");
}
}
C ben.
milyen forditot hasznalsz?
@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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!