Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 28.05.2017, 16:31   #1 (permalink)
Zebraya
Новичок
 
Регистрация: 28.05.2017
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Удалить из списка элементы, которые больше 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;
}
Zebraya вне форума   Ответить с цитированием

Старый 28.05.2017, 16:31
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Пожалуйста, посмотрите схожие по содержанию темы

Удалить повторы слов из списка
Все ли элементы списка comboBox различны, Delphi

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.