|
this is my full updated code but still the code is not completed and there is error.
see the code and also read my first post and guide me how to complete the program.
class PrintQueue
{
private Document head;
private int size;
public int Count
{
get
{
return size;
}
}
public void Push(Object data)
{
Document toAdd = new Document();
toAdd.data = data;
Document current = head;
while (current.Next != null)
{
current = current.Next;
}
current.Next = toAdd;
size++;
}
public bool Pop()
{
Document tempNode = head;
Document lastNode = null;
int count = 0;
if (size > 0)
{
while (tempNode != null)
{
if (count == size - 1)
{
lastNode.Next = tempNode.Next;
return true;
}
count++;
lastNode = tempNode;
tempNode = tempNode.Next;
}
}
return false;
}
}
public abstract class Document
{
public Document Next;
public Object data;
public string Subject { get; set; }
public abstract string type();
}
public class WordDocument : Document
{
public override string type()
{
return "docx";
}
}
public class PdfDocument : Document
{
public override string type()
{
return "pdf";
}
}
for this line i will get error
Document toAdd = new Document();
but how could i use there worddoc or pdfdoc class because i do not know which one should use inside in PrintQueue class?
so tell me what is the work around and also see and tell me Pop() function is properly constructed or not ?
thanks
tbhattacharjee
|
|
|
|
|
the 2 questions i was trying to solve as follows
Question 1 : Write a class named Document to represent a document node in a print queue. it should contain a method name that returns the subject of the document and an abstract method called type that returns the document type . from document class derive two concrete classes named word document and pdf document.
Question 2 : Another class named Print Queue that is implemented as a linked list of Document objects. Print Queue should have a method named Push for adding a document to the end of the list, a method named pop for removing the first document from the list , and a method named DisplayContents for listing all of the documents in the Print Queue, reporting both the Name and Type of each element Print Queue should not use any standard library classes it should be own implementation of linked list.
here i like to post whatever at last i achieved. so please see the code and question let me know is it correct as per the 2 question pasted here.
see the latest code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PrintQueueDemo
{
class PrintQueue
{
Node head;
Node tail;
public void Push(string strType, string strName)
{
if (head == null)
{
head = new Node(strType, strName);
tail = head;
}
else
{
Node node = new Node(strType, strName);
tail.setNext(node);
tail = node;
}
}
public Node.Document Pop()
{
if (head == null)
return null;
Node.Document doc = new Node.Document(head.document.Type, head.document.Name);
head = head.nextnode;
if (head == null)
tail = null;
return doc;
}
public string DisplayContents()
{
string content = "";
Node node = head;
if (node == null)
return "PrintQueue is empty";
content = node.document.Name + ": " + node.document.Type;
while (node.nextnode != null)
{
node = node.nextnode;
content += "\r\n" + node.document.Name + ": " + node.document.Type;
}
return content;
}
public class Node
{
public Document document { get; private set; }
public Node nextnode { get; private set; }
public Node(string strType, string strName)
{
document = new Document(strType, strName);
}
public void setNext(Node node)
{
nextnode = node;
}
public class Document
{
public string Type { get; private set; }
public string Name { get; private set; }
public Document(string strType, string strName)
{
Name = strName;
Type = strType;
}
}
}
}
}
PrintQueue pq = new PrintQueue();
pq.Push("cpp", "main.cpp");
pq.Push("c#", "main.cs");
pq.Push("c", "main.c");
pq.Push("h", "myinclude.h");
Console.WriteLine(pq.DisplayContents());
Console.WriteLine("===");
PrintQueue.Node.Document doc;
doc = pq.Pop();
Console.WriteLine("{0}: {1}", doc.Name, doc.Type);
doc = pq.Pop();
Console.WriteLine("{0}: {1}", doc.Name, doc.Type);
doc = pq.Pop();
Console.WriteLine("{0}: {1}", doc.Name, doc.Type);
doc = pq.Pop();
Console.WriteLine("{0}: {1}", doc.Name, doc.Type);
Console.WriteLine("===");
Console.WriteLine(pq.DisplayContents());
Console.WriteLine("===");
pq.Push("xls", "workbook.xls");
Console.WriteLine(pq.DisplayContents());
just tell me the above code will be accepted as per 2 question which i pasted at top. thanks
tbhattacharjee
|
|
|
|
|
No.
From a personal POV, I wouldn't use a tail unless I really had to - it complicates things, and it far to easy to mess it up. I'd traverse the list (or actually use a Queue rather than a linked list anyway).
But...
Why are you returning a new node on Pop? What's wrong with the actual node? Why waste time creating a new one, when it may not be the same as the original in all respects?
Why do you have a public nextnode property and a setNext method? Dump the method and make the setter public as well.
If you are going to use XML comments (and it's a good idea) use them consistently: i.e. every public object should have a "proper" comment.
What happened to the abstract Document class?
Why does your test code not check for nulls? There is no point in returning null for an error if you don't check for it anywhere!
Why do it like this:
content = node.document.Name + ": " + node.document.Type;
while (node.nextnode != null)
{
node = node.nextnode;
content += "\r\n" + node.document.Name + ": " + node.document.Type;
} Try changing it round:
while (node.nextnode != null)
{
content += node.document.Name + ": " + node.document.Type + "\r\n";
node = node.nextnode;
} Or better, use a string builder:
public string DisplayContents()
{
StringBuilder content = new StringBuilder();
Node node = head;
while (node != null)
{
content.AppendFormat("{0} : {1}\n", node.document.Name, node.document.Type);
node = node.nextnode;
}
return content.ToString();
}
And why is Document a part of Node? Is there a good reason? I can see why you might want them to be separate classes, but...
If Node inherited from Document that would make sense, or even if Document inherited from Node - but making it an encapsulated class feels very wrong, and complicates your code.
I'd probably make Node an abstract class, and inherit an abstract Document from that, then inherit the concrete PdfDocument and WordDocument you were using previously from there.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
modified 15-Nov-15 7:57am.
|
|
|
|
|
i have posted so many question for this issue with my though and code. i have one request can you please post the full right code as per your thought and thinking and it will long time for you because already i post the full code and you just need to arrange the same code as your thinking.
would you please help me posting code as per your thinking. thanks
tbhattacharjee
|
|
|
|
|
No - this is your homework, and it may seem cruel to not do it for you, but...you need to understand this stuff because the next assignment will assume that you do and build upon it. And the best way to understand it is to do it, looking at anothers code doesn't tell you why it's like it is.
Plus, you do realize that your tutor knows this site exists and would mark your code knowing you copied it from me? That's not likely to give you a good mark!
So have a go. It's not complicated once you get your head round it, and you seem to be intelligent enough to do it easily - if you stop trying to take short cuts!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I'm doing some automated testing where I read a datarow from a spreadsheet then pull in a set of steps from and apply the data to a web page.
There is no dependency between the data row, each using its own browser instance to simulate an individual user.
From the little I've learned there are performance differences between parallel and thread based executions.
At the moment I intend to go thread based - but may I have some feedback from community based in your experience.
Ger
|
|
|
|
|
There is no easy answer.
Depending on the type processing required and the hardware resources available (i.e. CPU "cores"), parallelizing will perform better or it may not.
Building and tearing down tasks incurs overhead; overhead not incurred in "non-parallel" operations. If the load can be spread around, and all tasks can run independently then parallelizing can work for you; otherwise it may not. You need to benchmark your options and keep in mind your final configuration; don't optimize prematurely.
|
|
|
|
|
112 pages take 50 mins to complete sequentially
Ger
|
|
|
|
|
And?
I once got a payroll job that ran for 24 hours down to 20 minutes by presorting one of the input files.
No multitasking.
|
|
|
|
|
And ... I expect some experimentation is in order.
I've never operated beyond a single thread in a commercial environment before - I've never had the need, just like your experience a decent sort or index has always been sufficient.
If it works well, it should give me a simulated multi user situation.
Each discrete task opens a web page, browses to a URL (served by localhost) fills two text boxes hits two radios, clicks a button then kills the page.
Ger
|
|
|
|
|
I see; thank you.
The problem (IMO) you are faced with is that the response from each web page (i.e. site) can be different; based on the path to that site.
I would therefore say your app is "IO / Input bound".
In this case, parallel processing should help since other tasks can run while others wait for a web response (using asynchronous callbacks).
(Out of curiosity, I would put "stop watch" code around my internet accesses and time them for the various sites).
|
|
|
|
|
For the specific test threading reduced the elapsed time from 50 to 25 mins, and significantly improved CPU utilisation.
Ger
|
|
|
|
|
I'm trying to take data collected on a form, and output it to another form, but I'm getting an "inaccessible due to its protection level" error.
So I have form A, that has a panel with some dynamically generated textboxes.
FormA -> panelA -> txtQtyA
In Form B, I want to access the data, and I'm trying to use:
txtQtyB.text = FromA.panelA.txtQtyA.Text, but I get the error for panelA.
I have tried changing the forms constructor to Public, just to see if it would "see" it with no luck.
Any assistance would be appreciated.
|
|
|
|
|
You need to edit this: "FromA.panelA.txtQtyA" in the Visual Designer. It's got a property called "Modifiers" which is set to Private. You'll want to make that either Internal or Public - depending on your needs.
Best,
John
-- LogWizard Meet the Log Viewer that makes monitoring log files a joy!
|
|
|
|
|
That removed the error, but introduced another.
I now get an error on the same line but is is under FormA.PanelA stating: An object reference is required for the non-static field, method or property.
txtQtyB.Text = FormA.panelA.txtQtyA.Text;
I'm not sure how I can change the accessor for a dynamically created control?
And just to add a little more. FormA creates and calls FormB.
|
|
|
|
|
You need an instance of FormA, like:
var forma = new FormA();
txtQtyB.Text = forma.panelA.txtQtaA.Text;
Or, more likely:
var forma = new FormA();
txtQtyB.Text = forma.txtQtaA.Text;
-- LogWizard Meet the Log Viewer that makes monitoring log files a joy!
|
|
|
|
|
Or even more likely, he needs the existing instance of the form that the user entered data into...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
No.
This is a bad idea - it ties the two design of the two forms together and means they can't be modified without considering the impact of changes on the outside world.
The default setting is private for a reason, and changing it to public is a hack!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Changing the 'Ctor of a Form's access to 'Public is a mistake.
You need to set up a dynamic linkage between the run-time created TextBoxes in FormA and FormB. There are several ways you could do this, all relatively simple to implement. One example:
1. if FormB is a "Main Form" and creates the instance of FormA, you could have code in FormB create the TextBoxes at run-time and inject them into FormA: that way, FormB would have direct references to the TextBoxes.
To select from several other possible techniques, it would be helpful to know:
1. which is the "Main Form" here: A, B, or ? if A is not the Main Form where is the code that declares an instance of it and shows it ?
2. which is the Form in which the run-time TextBoxes in A are created: A ? or ?
3. do the number of TextBoxes created at run-time vary, or are they always the same number of TextBoxes ?
«I want to stay as close to the edge as I can without going over. Out on the edge you see all kinds of things you can't see from the center» Kurt Vonnegut.
|
|
|
|
|
|
Hi all,
I have started a new WindowsForms project and I am wondering if there is a benefit to store my project data in a local SQLCE database or just store data table(s) in a xml file.
The data-tables have a maximum of 9999 records and 150 columns.
The data is used for auto-complete source(job number only) and to compare just one record from stored data with new data. the data does not change for hours.
The data per column is 10 characters.
I hope You can help me to choose and elaborate the pro's and cons.
Groover
0200 A9 23
0202 8D 01 80
0205 00
|
|
|
|
|
Any table with 150 columns means you have a bad design!
Having said that I would always go for a database solution but it may depend on your distribution requirements.
Managing data in an XML file is dramatically more difficult than read/write to a database. You have difficulty maintaining any sort of relational integrity and reporting is painful.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Hi Mycroft,
Having a table with 150 columns is a must, the data just has 150 parameters that can change.
there is no need for reporting and no relations, just one or two tables, and distribution is to one workstation only.
Groover
0200 A9 23
0202 8D 01 80
0205 00
|
|
|
|
|
In general, it will take a bit more effort to get up and running with SqlCE than with XML files (IMO). There is also usually a need to distribute extra runtime dll's with SqlCE.
There is nothing in the description of your project that makes it obvious which is the better choice; and listing "pros and cons" that may have no bearing on your project seems pointless.
If there are no obvious advantages (apparent to you), then go with the one that performs best relative to your current needs.
|
|
|
|
|
Hi Gerry,
With the XML datafile I will have to store the datatable in memory and overwrite or create a new XML file with new or changed data.
Wit SQLCE database I will have to deal with one record only.
Groover
0200 A9 23
0202 8D 01 80
0205 00
|
|
|
|