Mantrap.
Вот, собственно над чем воюю третюю ночь.

Подскажите, где и что не так ?



Программа работает с двусвязным списком.

Одна и та же ошибка во всех процедурах.





Комментарии
17.04.2007 в 20:24

WAAAAAAAAAGH!!!!!!1111ONEONE
код посмотреть можно?



Вообще пишет, что у тебя какие-то указатели не совместимы
17.04.2007 в 20:31

Mantrap.
хм, он по идее на Си с литовскими вставками. Сейчас закину, если нужно прокомментирую.



Это по идее, начало самое, и первая процедура к которой он придирается.





#include <stdio.h>

#include <stdlib.h>





struct el{

struct el *pirmyn; //вперёд

int duom;

struct el *atgal; // назад

};

int veiksmas=0;

int duomuo, i, pozicija, duom, pradzia, pabaiga;





void Sukurti_sar ( struct el * , struct el * ); // создать список

void Spausdinti_sar ( struct el * ); // его отпечатать

void Iterpti ( struct el *pradzia, struct el *pabaiga, int ); // вставить элемент перед указаным

void Naikinti_sar ( struct el *pradzia , struct el *pabaiga ); // удалить список



int main()

{

struct el *pradzia, *pabaiga;

int sk;

Sukurti_sar ( &pradzia, &pabaiga );

Spausdinti_sar ( pradzia );

puts ("<-------------------------------------------->");

puts ("Перед которым будем добавлять ?");

puts ("<-------------------------------------------->");

scanf ("%d", &sk);

Iterpti (&pradzia, &pabaiga, sk);

Spausdinti_sar ( pradzia );

Naikinti_sar ( &pradzia, &pabaiga );

return 0; /* tik Windows */

}

void Sukurti_sar (struct el *pradzia,struct el *pabaiga)

{

struct el *elem;

int reiksme;

puts("Iveskite saraso elementus.Noredami baigti,iveskite 0"); //ввести числа, 0 - закончить

pradzia=NULL;

pabaiga=NULL;

scanf("%d",&reiksme);

while (reiksme !=0)

{

if (pradzia==NULL)

{

elem=(struct el *) malloc(sizeof(struct el));

elem->duom=reiksme;

elem->pirmyn=NULL;

elem->atgal=NULL;

pradzia=elem;

pabaiga=elem;

}

else

{

elem=(struct el *) malloc(sizeof(struct el));

elem->duom=reiksme;

elem->atgal=pabaiga;

elem->pirmyn=NULL;

pabaiga->pirmyn=elem;

pabaiga=elem;

}

scanf("%d",&reiksme);

}

}



//========================================================

17.04.2007 в 20:44

WAAAAAAAAAGH!!!!!!1111ONEONE
void Sukurti_sar ( struct el * , struct el * ); - передается указатель

struct el *pradzia, *pabaiga;

Sukurti_sar ( &pradzia, &pabaiga ); - тут передается адрес pradzia.

Лечение:

void Sukurti_sar ( struct &el * , struct &el * );



Остальные аналогично
17.04.2007 в 23:03

Mantrap.
Спасибо ! Сейчас попробую.
17.04.2007 в 23:18

Mantrap.
Говорит, "parse error before &"
17.04.2007 в 23:27

WAAAAAAAAAGH!!!!!!1111ONEONE
тады

void Sukurti_sar ( struct el * , struct el * ); // создать список

void Spausdinti_sar ( struct el * ); // его отпечатать

void Iterpti ( struct el *pradzia, struct el *pabaiga, int ); // вставить элемент перед указаным

void Naikinti_sar ( struct el *pradzia , struct el *pabaiga ); // удалить список



int main()

{

struct el *pradzia, *pabaiga;

int sk;

Sukurti_sar ( pradzia, pabaiga );

Spausdinti_sar ( pradzia );

дальше аналогично.



gcc молча проглотил

18.04.2007 в 01:17

Mantrap.
И всё равно ничего путного не удаётся.

Можно я тебе на ю-мыл всю прогу, а ?
18.04.2007 в 01:32

WAAAAAAAAAGH!!!!!!1111ONEONE
лучше на e-mail. завтра посмотрю
18.04.2007 в 01:36

Mantrap.
Мм, окей. Завтра ко скольки ?

Было бы идеально до часа по московскому.
18.04.2007 в 01:47

WAAAAAAAAAGH!!!!!!1111ONEONE
Nevermind. я завтра в инете буду не раньше 7 по мск.
18.04.2007 в 01:52

Mantrap.
Чёрт. Жаль ;\

Что ж, у меня ещё вся ночь впереди.



Большое спасибо за помощь ! :-)
19.04.2007 в 10:25

Партизанский дуэт
нету под рукой компилятора.



попробуй поиграться с аргументами, что-то на мой взгляд неправильно



void Sukurti_sar ( struct &el * , struct &el * );

void Sukurti_sar ( struct &el, struct &el);

void Sukurti_sar ( &el, &el );
19.04.2007 в 18:51

А ты уже научился заряжать левой ногой свой телефон?
А это не прокатит? как никак адрес указателя передаете

void Sukurti_sar ( struct el** , struct el** );

23.04.2007 в 10:07

Партизанский дуэт
Вообще если адрес, то принимаем как *el, а передаем как &el
23.04.2007 в 10:10

Партизанский дуэт
Блин, я на обычных сисях давно уже ничего не писал :)



Вопсчем такс - собсно el у нас тип имеет struct.



void Sukurti_sar ( el *value1, el *value2);



вызываем как



void Sukurti_sar ( &val1, &val2 );
23.04.2007 в 11:32

Mantrap.
Сейчас попробую. Спасибо :-)
23.04.2007 в 18:01

Mantrap.
И всё равно что-то не то. :-(



полный код
23.04.2007 в 21:50

А ты уже научился заряжать левой ногой свой телефон?
Переделал 1ую функцию. С остальными я думаю вы сами :):



typedef struct{

struct el *pirmyn;

int duom;

struct el *atgal;

} el;



int veiksmas=0;

int duomuo, i, pozicija, duom, pradzia, pabaiga;





void Sukurti_sar(el** pradzia, el** pabaiga)

{

el* elem;

int reiksme;

puts("Iveskite saraso elementus.Noredami baigti,iveskite 0");

pradzia=NULL;

pabaiga=NULL;

scanf("%d",&reiksme);

while (reiksme !=0)

{

if (pradzia==NULL)

{

elem=(el*) malloc(sizeof(el));

elem->duom=reiksme;

elem->pirmyn=NULL;

elem->atgal=NULL;

*pradzia=elem;

*pabaiga=elem;

}

else

{

elem=(el *) malloc(sizeof(el));

elem->duom=reiksme;

elem->atgal=(struct el*)*pabaiga;

elem->pirmyn=NULL;

(*pabaiga)->pirmyn=(struct el*)elem;

*pabaiga=elem;

}

scanf("%d",&reiksme);

}

}
24.04.2007 в 21:47

Mantrap.
SonicCat, поясни пожалуйста этот момент.

typedef struct{

struct el *pirmyn;

int duom;

struct el *atgal;

} el;




24.04.2007 в 22:57

А ты уже научился заряжать левой ногой свой телефон?
Создаем структуру и даем ей псевдоним el. В итоге имеем 2 типа : struct el и el. это для того чтоб struct не писать. Но это особо не мешает т.к. мы може приводить из struct el в el и обратно.