Member 13066671 Ответов: 1

Я хочу создать метод, который перегружает метод additem (), который может добавить элемент перед списком(в расположении array [0] )


Верен ли мой код? потому что у меня есть выходной номер ноль в конце...на самом деле он должен быть перед списком...надеюсь, вы сможете мне помочь

Что я уже пробовал:

//Список.ч

#ifndef LIST_H
#define LIST_H

const int maxSize = 100;

class List
{
public:
	List();
	~List();

	int numberOfItem();
	void addItem(int item,int position);
	void printItem();

private:
	int size;

	int array[maxSize];

};
#endif  


//List.cpp
#include <iostream>
using namespace std;
#include "List.h"

List::List()
{
	size = 0;
}

List::~List()
{}

int List::numberOfItem()
{
	return size;
}

void List::addItem(int item, int position)
{
	if (size == maxSize)
	{
		cout << "**There is no more place left***\n";
		return;
	}

	if (position<0 || position>size)
	{
		cout << "invalid position\n";
		return;
	}

	for (int i = size - 1; i >= position - 1; i--)
		 array[i+1]=array[i];

	array[position-1] = item;
	size++;
}

void List::printItem()
{
	for (int i = 0; i < size; i++)
	cout << array[i] << " ";
	cout << "\n";

}


//ListMain.cpp

#include <iostream>
using namespace std;
#include "List.h"

void main()
{
	int item, position;

	List ItemList;

	if (ItemList.numberOfItem() == 0)

		cout << "there are no elements in this list" << endl;


	for (int i = 0; i < 10; i++)
		ItemList.addItem(i*2,i);

	cout << "the forming of list after addition operation: "<<endl;
	ItemList.printItem();
	cout << "enter number to be added in the list: ";
	cin >> item;
	cout << "enter position of the number: ";
	cin >> position;
	ItemList.addItem(item, position);
	cout << "the new list are: ";
	ItemList.printItem();

}

Richard MacCutchan

То for петля в вашем addItem метод выглядит немного странно. Что происходит, когда размер и положение равны нулю?

1 Ответов

Рейтинг:
2

Patrice T

Возьмите лист бумаги и смоделируйте то, что должно делать addItem функция. см. wgat algotiyhm, который вы используете, и сравните его с вашим кодом.

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.