Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Удалить из списка элементы, которые больше 25 - C++ (http://www.tehnari.ru/f41/t253948/)

Zebraya 28.05.2017 16:31

Удалить из списка элементы, которые больше 25 - C++
 
Определить среднее значение элементов списка со значениями меньше либо равными 15. Удалить из списка элементы, которые больше 25.
Удаление не работает. Подскажите пожалуйста в чем ошибка.

Код:

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;

struct L
{
    int value;
    L* nextItem;
    L* prevItem;
};

void printList(L* List)
{
    L *currentItem=List;
    while(currentItem)
    {
    cout<<("%f\n", currentItem->value)<<"  ";
    currentItem=currentItem->nextItem;
    };
}

L* createList(int size)
{
    int elem;
    L* List=new L;
    L* currentItem=List;
    L* prev;
   
    cout<<"Vvedite element: "<<endl;
    cin>>elem;
    List=new L;
    List->value=elem;
    List->nextItem=NULL;
    currentItem=List;
   
    for(int num=2;num<=size;num++)
    {
    cin>>elem;
    prev=currentItem;
    currentItem=new L;
    currentItem->value=elem;
    currentItem->nextItem=NULL;
    prev->nextItem=currentItem;
    };
    return List;
}

L* Average(L *first, int n)

    struct L *currentItem;
    currentItem=first;
    float s=0;
    int i=0;
    while(currentItem!=NULL)
    {
    if(currentItem->value<=15)
    {
        s=s+currentItem->value;
        i++;
    }
    currentItem=currentItem->nextItem;
    }
    if(i>0)
    s=s/i;
    printf("%1.2f",s);
    printf("\n");
    return first;
}

void Delete(L* first)
{
    L*Del=first;
    while(Del)
    {
    first=first->nextItem;
    delete Del;
    Del=first;
    }
}

L* Killer(L *first, int n)
{
    L *currentItem=first;
    for(int i=n; i>0; i--)
    {
    if(currentItem->value>25)
    {
        delete currentItem;
    }
    return first;
    }
}
int _tmain(int argc, _TCHAR* argv[])
{
    L *first=0;
    int n;
    printf("Vvedite kolichestvo elementov: ");
    scanf("%d",&n);
    printf(": ");
    first=createList(n);
    printf("  ");
    printList(first);
    printf("\n");
    printf("Srednie znachenie: ");
    Average(first, n);
    Killer(first,n);
    printList(first);
    system("pause");
    delete(first);
    return 0;
}



Часовой пояс GMT +4, время: 13:11.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.