Hej igen.
jeg har skrvet en del mere på opgaven.
Men jeg kan ikke få funktionen fjern til at fungere, er det muligt for nogen til at se på den?
takker på forhånd.
kode:
/*
* File: main.c
* Author: Kongen ;)
*
* Created on 15. maj 2009, 10:52
*/
#include <stdio.h>
#include <stdlib.h>
struct data {
int *tabel;
int antal;
int maxantal;
};
int fjern(struct data *s, int tal)
{
int i;
for (i = 0; i < s->antal; i++) {
if (s->tabel[i] == tal) {
int j;
for(j = i; j < s->antal-i ; j++)
{
s->tabel[i + j] = s->tabel[i + j + 1];
}
s->antal--;
return 1;
}
}
return 0;
}
void intialiser(struct data *s) {
s->antal = 0;
//s -> tabel = malloc(10 * sizeof (int));
s->tabel = (int*) malloc (10 *sizeof(int));
s->maxantal = 10;
}
/* Tror den skal hedde indsaet */
void indsaet(struct data *s, int tal) //Det er tallet 7 der er tale om her.
{
if (s->antal == s->maxantal) {
s->tabel = (int*) realloc(s->tabel,(s->maxantal + 10) *sizeof(int));
//s -> tabel = realloc(s ->tabel, (s -> maxantal * 2) * sizeof (int));
s->maxantal = (s->maxantal * 2); /* Added */
}
if (s->antal == 0) {
s->tabel[0] = tal;
s->antal++;
} else if (tal > s->tabel[s -> antal - 1]) {
s -> tabel[s -> antal] = tal;
s -> antal++;
} else if (tal < s->tabel[0]) {
int i;
for (i = s -> antal - 1; i >= 0; i--)
s -> tabel[i + 1] = s -> tabel[i];
s -> tabel[0] = tal;
s -> antal++;
} else {
int i = 0;
while (tal >= s -> tabel[i])
i++;
int k;
for (k = s -> antal - 1; k >= i; k--)
s -> tabel[k + 1] = s -> tabel[k];
s -> tabel[i] = tal;
s -> antal++;
}
}
int soeg(int searchFor, struct data *s) {
int i;
for (i = 0; i < s->antal; i++) {
if (s->tabel[i] == searchFor) {
//printf("\nNummer %d fundet paa plads %d", s->tabel[i], i);
return 1;
}
}
return 0;
}
void udskriv(struct data *s) {
int i;
for (i = 0; i < s->antal; i++) {
printf("\n%d\ter paa plads\t%d:", s->tabel [i], i);
}
printf("\n\n");
printf("\nI alt har vi indsat %d elementer... \n\n", i);
}
/*
* My main
*/
int main(int argc, char** argv) {
struct data s;
intialiser(&s);
indsaet(&s, 8);
indsaet(&s, 2);
indsaet(&s, 7);
indsaet(&s, 6);
indsaet(&s, 9);
indsaet(&s, 3);
indsaet(&s, 10);
indsaet(&s, 1);
indsaet(&s, 4);
indsaet(&s, 5);
//indsaet(&s, 7);
indsaet(&s, 0);
indsaet(&s, 14);
indsaet(&s, 12);
indsaet(&s, 17);
indsaet(&s, 16);
indsaet(&s, 15);
udskriv(&s);
int searchFor = 7;
if (soeg(searchFor, &s) > 0) {
printf("\nElement %d fundet\n\n", searchFor);
} else printf("\nElement ikke fundet!!!\n\n");
fjern(&s, 7);
udskriv(&s);
system("system");
return 0;
}