проверте програму

  • Автор темы kaffein
  • Дата начала
K

kaffein

Гость
#1
Всем доброго времени суток!
вот создал програму про списки, ошибки при компиляции не выскакивают, но когда я иду на выполнение, в функциях происходят какие-то мистические вещи
посмотрите пожалуйста и напишите как надо
C++:
#include "stdafx.h"
#include <time.h> 
#include "stdio.h"
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

typedef struct maneg
{
char name [20];
char secondname[20];
maneg* next;
maneg* prev;
}list;
list *clear( list*h )
{
if(!h) return NULL;
list*n;
for(n=h->next;n;n=n->next )
{
if(h) free(h);
h=n;
}
if(h) free (h);
return 0;
}

list* dod(list* first)
{
list* nov;
nov = (list*) malloc(sizeof(list));
if(!nov)
printf("can not allocate memory");
return nov;
printf("vvedid dannue");
scanf("%s,%s",&(nov->name),&(nov->secondname));
nov->next=first;
first=nov;
return first;
}
list* poc(list* p)
{
list*n=p;
int i,sum=0;
printf("nom pos");
scanf("%i",&i);
for(n;n->next;n=n->next)
sum++;
if(sum==i)
return p;
}
list* per(list*p)
{  list*n=p;
if(p->next)p->next=p->prev;
n->prev=n->next;
return p;
}
list* dob(list*vuzel)
{
list* n;
n=(list*) malloc(sizeof(list));

if(!vuzel) return n;
if(vuzel->next) n->next=vuzel->next;
vuzel->next=n;
return n;
}
void print(list* first)
{
list*wwe;
wwe=first;
while(wwe)
{
printf("%s,%s\n",&(wwe->name),&(wwe->secondname));
wwe=wwe->next;

}


}
void fill_list(list*p)
{
for(;p;p=p->next)
{
printf(" enter name of student\n");
scanf("%s",&(p->name));

printf("enter secondname of student\n");
scanf("%s",&(p->secondname));

}
}
list *Add(list *p)
{
list *n = new list;
memset( n, 0, sizeof(list) );
if(!p) return n;

n->next = p->next;
p->next = n;
n->prev = p;
return n;
}


int main ()

{	
int q;		 
printf("vvedit kilkist\n");
scanf("%d",&q);
list *head = Add( NULL );
for(list*p=head;q>1;q--)
fill_list(head);
list fx;
list* r=dod(&fx);
list* o=poc(&fx);
list* s=per(&fx);
list* z=dob(&fx);
list* p=clear(&fx);
print(head);

int n, i, k,sum=0;
printf("vvedit rozmir masuva\n");
scanf("%d",&n);
int *a=new int [n];
srand(time(NULL));
for (i=0; i<n; i++)
a[i]=rand()%20; //заполнение массива случайными числами от 0 до 19

for (k=0; k<n; k++)
sum+=a[k];
printf("sum=%i",sum);  
delete [] a;
return sum;

}