<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Floyd, Operatorüberlung &amp;gt;&amp;gt;]]></title><description><![CDATA[<p>Problemstellung (es geht um das Verfahren von Floyd):<br />
*<br />
...<br />
Eine Klasse graph ist zu implementieren, die die Adjazenzmatrix am, die Matrix zm (Adjazenzmatrix<br />
zum Auflösen der Zwischenknoten) und die Anzahl n der Knoten als Member enthält. Der Operator</p>
<blockquote>
<p>&gt; ist für graph zu überladen und soll den Graphen robust in die Matrix am einlesen. Der überladene<br />
Operator &lt;&lt; soll die kürzesten Entfernungen und Zwischenknoten ausgeben.<br />
...</p>
</blockquote>
<ul>
<li></li>
</ul>
<p>Ich verstehe hier nicht richtig, wie ich den Operator &gt;&gt; überladen soll. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Ich habe das Programm so angefangen, dass die Matrix am/zm ein Element von &quot;Graph&quot; ist. Wie soll ich jetzt den Operator überladen. Man soll ja nicht die Werte der Matrix per Eingabeaufforderung eingeben!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/135055/floyd-operatorüberlung-gt-gt</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 06:10:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/135055.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 30 Jan 2006 14:00:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 30 Jan 2006 14:00:43 GMT]]></title><description><![CDATA[<p>Problemstellung (es geht um das Verfahren von Floyd):<br />
*<br />
...<br />
Eine Klasse graph ist zu implementieren, die die Adjazenzmatrix am, die Matrix zm (Adjazenzmatrix<br />
zum Auflösen der Zwischenknoten) und die Anzahl n der Knoten als Member enthält. Der Operator</p>
<blockquote>
<p>&gt; ist für graph zu überladen und soll den Graphen robust in die Matrix am einlesen. Der überladene<br />
Operator &lt;&lt; soll die kürzesten Entfernungen und Zwischenknoten ausgeben.<br />
...</p>
</blockquote>
<ul>
<li></li>
</ul>
<p>Ich verstehe hier nicht richtig, wie ich den Operator &gt;&gt; überladen soll. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Ich habe das Programm so angefangen, dass die Matrix am/zm ein Element von &quot;Graph&quot; ist. Wie soll ich jetzt den Operator überladen. Man soll ja nicht die Werte der Matrix per Eingabeaufforderung eingeben!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/981094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/981094</guid><dc:creator><![CDATA[rgHorus]]></dc:creator><pubDate>Mon, 30 Jan 2006 14:00:43 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 30 Jan 2006 14:06:18 GMT]]></title><description><![CDATA[<p>Normalerweise sehen diese Operatoren etwa so aus:</p>
<pre><code class="language-cpp">istream&amp; oderator&gt;&gt;(istream&amp; in, Matrix&amp; m)
{
  //lies die Werte aus in und verteile sie in m
  return in;
}

ostream&amp; operator&lt;&lt;(ostream&amp; out, const Matrix&amp; m)
{
  //schreibe die Werte aus m nach out
  return out;
}
</code></pre>
<p>In den einzelnen Methoden mußt du dir überlegen, in welcher Reihenfolge und Formatierung die Werte der Matrix kommen sollen/dürfen und das entsprechend auswerten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/981101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/981101</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 30 Jan 2006 14:06:18 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 30 Jan 2006 14:46:12 GMT]]></title><description><![CDATA[<p>Danke, aber das Gerüste hatte ich schon soweit.</p>
<p>Ich weiß aber nicht, wie ich die Werte mit dem Operator einlesen soll:</p>
<p>So siehts bei mir aus: <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">istream&amp; operator&gt;&gt;(istream&amp; is, Graph&amp; am)
{
	is&gt;&gt;am[0][0]=1;

    return is;
};
</code></pre>
<p>Noch ein kleines inhaltliches Problem: Reicht nicht eigentlich eine Matrix aus? Warum brauch ich 2?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/981129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/981129</guid><dc:creator><![CDATA[rgHorus]]></dc:creator><pubDate>Mon, 30 Jan 2006 14:46:12 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Tue, 31 Jan 2006 11:43:54 GMT]]></title><description><![CDATA[<p>ich hab mal dern algorithmus von floyd bei wikipedia nachgeschaut. die zweite matrix enthält für jedes knotenpaar die länge des kürzesten pfades zwischen beiden. diese matrix benötigst du, um den kürzesten pfad zwischen zwei knoten zu bestimmen.</p>
<p>aber die zweite matrix sollst du auch nicht einlesen sondern berechnen.</p>
<p>wie du die matrix &quot;am&quot; einlesen mußt hängt davon ab, in welchem format sie vorliegt. wenn nichts vorgegeben ist, dann kannst du dir ja eines ausdenken. zb zuerst die die anzahl der knoten des graphen und anschließend die matrixelemente als integer-zahlen.</p>
<p>das einlesen der elemente geschieht vereinfacht so:</p>
<pre><code class="language-cpp">for(int i=0; i&lt;anzahl_knoten; ++i)
  for(int j=0; j&lt;anzahl_knoten; ++j)
    in&gt;&gt;am[i][j];
</code></pre>
<p>du mußt aber beachten, daß die aufgabenstellung lautet, die matrix <strong>robust</strong> einzulesen. dh du brauchst eine fehlerbehandlung für den fall, daß die eingabedaten fehlerhaft sind (zb matrix-element keine zahl).</p>
<p>übrigens würde ich dir nicht empfehlen, die matrix als zweidimensionales c-array zu deklarieren. da kannst du nämlich die dimension nicht zur laufzeit einstellen. das scheint aber teil der aufgabe zu sein, denn es heißt ja, du sollst die zahl der knoten in einer objekt-variablen speichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/981894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/981894</guid><dc:creator><![CDATA[Konfusius]]></dc:creator><pubDate>Tue, 31 Jan 2006 11:43:54 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Wed, 01 Feb 2006 15:59:54 GMT]]></title><description><![CDATA[<p>Bei mir kommt immer fogende Fehlermeldung:<br />
error C2676: Binärer Operator '[': 'Graph' definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht</p>
<p>Wie benutz ich denn dann eigentlich den Operator richtig.<br />
Wenn g vom Typ Graph ist, kann ich da einfach cin&gt;&gt;g; schreiben???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/983197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/983197</guid><dc:creator><![CDATA[rgHorus]]></dc:creator><pubDate>Wed, 01 Feb 2006 15:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Thu, 02 Feb 2006 07:29:35 GMT]]></title><description><![CDATA[<p>bei selbstgeschriebenen klassen gibt es keinen []-operator, es sei denn, du definierst selber einen. das geht aber nur eindimensional. also am[0] und nicht am[0][0]. theoretisch kannst du mit einigen verrenkungen auch am[0][0] ermöglichen, aber das lohnt den aufwand nicht. besser, du schreibst dir eine methode at():</p>
<pre><code class="language-cpp">int
&amp;Graph::at (int spalte, int zeile)
{
  return matrix_speicher[spalte+zeile*breite]; // oder so...
}
</code></pre>
<p>du kannst dann auf die matrixelemente etwa mit <a href="http://am.at" rel="nofollow">am.at</a>(0,0)=1 zugreifen.</p>
<p>rgHorus schrieb:</p>
<blockquote>
<p>Wenn g vom Typ Graph ist, kann ich da einfach cin&gt;&gt;g; schreiben???</p>
</blockquote>
<p>wenn du wie in den vorherigen posts beschrieben für die Klasse Graph einen &gt;&gt;-operator definierst, dann ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/983646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/983646</guid><dc:creator><![CDATA[Konfusius]]></dc:creator><pubDate>Thu, 02 Feb 2006 07:29:35 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Thu, 02 Feb 2006 21:03:22 GMT]]></title><description><![CDATA[<p>Danke.</p>
<p>Aber was bedeutet &quot;spalte+zeile*breite&quot;. Versteh leider nicht wirklich, was dahinter steckt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984538</guid><dc:creator><![CDATA[rgHorus]]></dc:creator><pubDate>Thu, 02 Feb 2006 21:03:22 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Fri, 03 Feb 2006 07:19:20 GMT]]></title><description><![CDATA[<p>rgHorus schrieb:</p>
<blockquote>
<p>Aber was bedeutet &quot;spalte+zeile*breite&quot;. Versteh leider nicht wirklich, was dahinter steckt!</p>
</blockquote>
<p>Das ist eine Möglichkeit, eine zweidimensionale Matrix in einem eindimensionalen Array zu speichern - mit dem Ausdruck ('breite' wäre ein Element der Graph-Klasse, was die Zeilenlänge der Matrix angibt) rechnest du die x/y-Koordinaten in einen Array-Index um.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984697</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 03 Feb 2006 07:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Fri, 03 Feb 2006 14:29:50 GMT]]></title><description><![CDATA[<p>Ich habs jetzt so stehen:</p>
<pre><code class="language-cpp">int &amp;Graph::at (int spalte, int zeile) 
{
	int *matrix_speicher;
	return matrix_speicher[spalte+zeile*n];
};
</code></pre>
<p>Stimmt das mit dem &quot;int *matrix_speicher;&quot;, oder hab ich da was falsch verstanden?</p>
<p>In der main() hab ich ja ein Variable g vom Typ Graph deklariert.<br />
Da kann ich ja nicht einfach &quot;<a href="http://am.at" rel="nofollow">am.at</a>(0,0)=1&quot; schreiben. &quot;<a href="http://g.am.at" rel="nofollow">g.am.at</a>(0,0)=1&quot; geht ja aber auch nicht!</p>
<p>Wie müsste ich das denn nun schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/985059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/985059</guid><dc:creator><![CDATA[rgHorus]]></dc:creator><pubDate>Fri, 03 Feb 2006 14:29:50 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Fri, 03 Feb 2006 14:38:48 GMT]]></title><description><![CDATA[<p>rgHorus schrieb:</p>
<blockquote>
<p>Ich habs jetzt so stehen:</p>
<pre><code class="language-cpp">int &amp;Graph::at (int spalte, int zeile) 
{
	int *matrix_speicher;
	return matrix_speicher[spalte+zeile*n];
};
</code></pre>
<p>Stimmt das mit dem &quot;int *matrix_speicher;&quot;, oder hab ich da was falsch verstanden?</p>
</blockquote>
<p>Ja, hast du - matrix_speicher wäre ein Element des gesamten Graphen und nicht nur eine lokale Variable:</p>
<pre><code class="language-cpp">class Graph
{
public:
  Graph(int anzahl) : matrix(new int[anzahl*anzahl]),mat_breite(anzahl) {}
  int&amp; at(int sp,int zl)
  {
    return matrix[sp+zl*mat_breite];
  }
  ...
private:
  int* matrix;
  int mat_breite;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/985063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/985063</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 03 Feb 2006 14:38:48 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 06 Feb 2006 12:12:24 GMT]]></title><description><![CDATA[<p>Ich hab alles so gemacht, wie du gesagt hast.</p>
<p>So sieht meine AUsgabefkt. aus.</p>
<pre><code class="language-cpp">ostream&amp; operator&lt;&lt;(ostream&amp; os, const Graph&amp; am)
{
	os&lt;&lt;&quot;Entfernungen:&quot;&lt;&lt;endl;
	os&lt;&lt;am.at(0,0);
	return os;
};
</code></pre>
<p>Bei &quot;os&lt;&lt;<a href="http://am.at" rel="nofollow">am.at</a>(0,0);&quot; kommt dann aber folgende Fehlermeldung:</p>
<p>error C2662: 'Graph::at': this-Zeiger kann nicht von 'const Graph' in 'Graph &amp;' konvertiert werden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987309</guid><dc:creator><![CDATA[rgHorus]]></dc:creator><pubDate>Mon, 06 Feb 2006 12:12:24 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 06 Feb 2006 12:16:27 GMT]]></title><description><![CDATA[<p>Wenn du mit const Graph arbeitest, benötigst du noch eine konstante Version der at()-Methode (zusätzlich zu der vorhandenen):</p>
<pre><code class="language-cpp">class Graph
{
public:
  ...
  int at(int x,int y) const
  {
    return matrix[sp+zl*mat_breite];
  }
  ...
};
</code></pre>
<p>(ja, da steht das selbe drin wie in der anderen Version - aber wichtig sind hier der unterschiedliche Rückgabetyp und das &quot;const&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987314</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Mon, 06 Feb 2006 12:16:27 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 06 Feb 2006 12:49:45 GMT]]></title><description><![CDATA[<p>Ok, jetzt kommt zwar kein Compile-Fehler mehr, aber beim Ausführen kommt ein Fehler und das Programm bricht ab.</p>
<p>Fehler kommt an der Stelle &quot;return matrix[sp+zl*mat_breite];&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987342</guid><dc:creator><![CDATA[rgHorus]]></dc:creator><pubDate>Mon, 06 Feb 2006 12:49:45 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 06 Feb 2006 12:54:43 GMT]]></title><description><![CDATA[<p>rgHorus schrieb:</p>
<blockquote>
<p>Fehler kommt an der Stelle &quot;return matrix[sp+zl*mat_breite];&quot;</p>
</blockquote>
<p>Nächste Frage: Wie lautet dieser Fehler? Und welchen Wert spuckt der Debugger für die beteiligten Variablen aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987350</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Mon, 06 Feb 2006 12:54:43 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 06 Feb 2006 13:25:24 GMT]]></title><description><![CDATA[<p>Fehlermeldung:<br />
Unbehandelte Ausnahme bei 0x004013a6 in Graph.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0x00000000.</p>
<p>mat_breite -858993460 int<br />
- matrix 0xcccccccc int *<br />
CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden int<br />
sp 1 int<br />
- this 0x0012feac {am=0x00321180 zm=0x00322cf8 n=6 ...} const Graph * const<br />
- am 0x00321180 double * *<br />
- 0x003211d8 double *<br />
-1.0000000000000000 double<br />
- zm 0x00322cf8 double * *<br />
- 0x00322d50 double *<br />
-1.0000000000000000 double<br />
n 6 unsigned int<br />
- matrix 0xcccccccc int *<br />
CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden int<br />
mat_breite -858993460 int<br />
zl 1 int</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987397</guid><dc:creator><![CDATA[rgHorus]]></dc:creator><pubDate>Mon, 06 Feb 2006 13:25:24 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 06 Feb 2006 13:27:48 GMT]]></title><description><![CDATA[<p>Das sieht ganz so aus, als ob du deinen Graph nicht richtig initialisiert hast. Von wo aus wird der Operator denn aufgerufen?</p>
<p>(nur zur Sicherheit - was für Konstruktoren hast du definiert?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987400</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Mon, 06 Feb 2006 13:27:48 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 06 Feb 2006 13:40:50 GMT]]></title><description><![CDATA[<p>Konstruktor von Graph:</p>
<pre><code class="language-cpp">class Graph
{
private:
...
public:
	//Konstruktor
	Graph(size_t n);
...
};
</code></pre>
<pre><code class="language-cpp">Graph::Graph(size_t n):n(n)
{
	cout&lt;&lt;&quot;Konstruktor von Graph&quot;&lt;&lt;endl;

	am=new double *[n];
	for(size_t i=0;i&lt;n;i++)
	{
		am[i]=new double	[n];
		for(size_t k=0; k&lt;n; k++)
		{
			am[i][k]=-1;
		}
	}

	zm=new double *[n];
	for(size_t i=0;i&lt;n;i++)
	{
		zm[i]=new double	[n];
		for(size_t k=0; k&lt;n; k++)
		{
			zm[i][k]=-1;
		}
	}

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/987417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987417</guid><dc:creator><![CDATA[rgHorus]]></dc:creator><pubDate>Mon, 06 Feb 2006 13:40:50 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 06 Feb 2006 13:49:53 GMT]]></title><description><![CDATA[<p>Wenn du deine Matrix in 'am' und 'zm' untegebracht hast, mußt du aus der at()-Methode heraus auch diese Elemente verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987427</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Mon, 06 Feb 2006 13:49:53 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 06 Feb 2006 14:22:23 GMT]]></title><description><![CDATA[<p>Mmmhh. Aber wie soll ich das jetzt machen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Ist jetzt die Variable &quot;int *matrix&quot; unnötig? Problem ist bloß, dass ich am als &quot;double **am&quot; deklariert habe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987496</guid><dc:creator><![CDATA[rgHorus]]></dc:creator><pubDate>Mon, 06 Feb 2006 14:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to Floyd, Operatorüberlung &amp;gt;&amp;gt; on Mon, 06 Feb 2006 17:03:10 GMT]]></title><description><![CDATA[<p>Problem gelöst - danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987719</guid><dc:creator><![CDATA[rgHorus]]></dc:creator><pubDate>Mon, 06 Feb 2006 17:03:10 GMT</pubDate></item></channel></rss>