Trädvy Permalänk
Medlem
Registrerad
Feb 2014

Hjälp med sökfunktion i C#

Behöver hjälp med den här koden, den fungerar förutom att sökningsfunktionen strular...har gjort om och ändrat några gånger men jag förstår inte felet.
Dels så hittar den bara det senast skriva inlägget och skriver ut "Din sökning misslyckades" även om jag vet att ett inlägg ska finnas, den skriver dessutom ut det lika många gånger som det finns inlägg i loggboken.

Dvs: Skriv tre inlägg. Det senaste inlägget är sökbart. De andra två hittas inte och den skriver då ut "Din sökning misslyckades" tre gånger(lika många gånger som det finns inlägg i loggboken) Tips och hjälp?

class Program { static void Main(string[] args) { List<string> loggBok = new List<string> { }; DateTime tiden = DateTime.Now; Console.WriteLine(tiden); string titel = ""; string logg = ""; string inlagg = ""; bool isRunning = true; while (isRunning) try { { Console.WriteLine("\nVälkommen till loggboken!"); Console.WriteLine("[1] Skriv nytt inlägg i loggboken"); Console.WriteLine("[2] Sök inlägg i loggboken"); Console.WriteLine("[3] Skriv ut alla loggar"); Console.WriteLine("[4] Avsluta programmet"); Console.Write("\nGörval i menyn: "); int menyVal = Convert.ToInt32(Console.ReadLine()); switch (menyVal) { case 1: Console.Write("Skriv en titel på ditt inlägg: "); titel = Console.ReadLine(); Console.Clear(); Console.WriteLine("Skriv ditt inlägg: "); Console.WriteLine(tiden); Console.WriteLine(titel); inlagg = Console.ReadLine(); logg = tiden + "\n" + titel + "\n" + inlagg; loggBok.Add(logg); break; case 2: Console.WriteLine("Skriv in ett sökord"); var keyword = Console.ReadLine(); foreach (var inlägg in loggBok) { if (inlagg.Contains(keyword)) { Console.WriteLine(logg); } else { Console.WriteLine("Din sökning misslyckades... "); } } break; case 3: Console.WriteLine("De här loggarna finns i loggboken\n "); foreach (string loggboken in loggBok) { Console.WriteLine(loggboken); } Console.WriteLine("Tryck på valfri tangent för att återgå till menyn..."); Console.ReadKey(); break; default: Console.WriteLine("Gör ett val i menyn..."); break; case 4: return; } } } catch { Console.WriteLine("Nu blev det fel, gör ett val i menyn.."); } } } }

Trädvy Permalänk
Medlem
Registrerad
Sep 2006

foreach (var inlägg in loggBok) { if(inlagg.Contains(keyword)) { Console.WriteLine(logg); } else { Console.WriteLine("Din sökning misslyckades... "); } } break;

Koden ovan loopar ju igenom alla dina inlägg i loggboken och antingen kommer du att skriva ut logg eller så kommer du att skriva ut Din sökning misslyckades. För alla inlägg.

Logg kommer att vara satt till det senaste som variabeln innehåller. Det du vill ha är inlägg där. Fast det är dumt att blanda variabelnamn. Ett enkelt sätt att lösa det på är att lägga till en boolean om sökningen lyckas.

bool träff = false; foreach (var logg in loggBok) { if(logg.Contains(keyword)) { Console.WriteLine(logg); träff = true; } } if(!träff) { Console.WriteLine("Din sökning misslyckades... "); } break;

! betyder not så om träff fortfarande är false efter loopen så skrivs den texten ut.

EDIT: Rättade till lite,

Trädvy Permalänk
Medlem
Registrerad
Apr 2016

Hej jag är helt ny till detta forum och vet inte hur man gör en egen tråd.

Jag behöver nämligen hjälp med en skoluppgift som jag verkligen inte förstår den ska vara inlämnad idag kl 24.00 vid skolans hemsida och jag får verkligen stress.

https://dl.dropboxusercontent.com/u/78075226/programmering/Bi...
https://antbring.wordpress.com/

Dessa är sidorna för uppgiften jag skulle vara väldigt glad för att få lite hjälp .

Trädvy Permalänk
Medlem
Registrerad
Maj 2013
Skrivet av furkishhh:

Hej jag är helt ny till detta forum och vet inte hur man gör en egen tråd.

Jag behöver nämligen hjälp med en skoluppgift som jag verkligen inte förstår den ska vara inlämnad idag kl 24.00 vid skolans hemsida och jag får verkligen stress.

https://dl.dropboxusercontent.com/u/78075226/programmering/Bi...
https://antbring.wordpress.com/

Dessa är sidorna för uppgiften jag skulle vara väldigt glad för att få lite hjälp .

Skriv vad du vill ha hjälp med istället. Vi är här för att hjälpa och inte göra det åt dig, speciellt inte en skoluppgift.
Kanske skulle ha planerat lite bättre och frågat tidigare?

Kollade dessutom igen uppgiften och det är verkligen inget komplicerat, du har t.o.m. fått hjälp med en kodsnutt i slutet.

M-ITX: Fractal Design Node 304 Gigabyte H97N i7 4790k Msi GTX980 Gaming Ballistix Sport 16GB @ 1600MHz

Trädvy Permalänk
Medlem
Registrerad
Apr 2016

uppgiftskolan

@Pamudas:

Du har fullständigt rätt, jag vart sjuk ett tag och har inte lagt märke till uppgfiten .

https://dl.dropboxusercontent.com/u/78075226/programmering/Bi...

Det står nu skall 7 stycken tal mellan 1-25 slumpas fram.

Int[] mina_tal = new int [10]

mina_tal [0] = 20;
mina_tal [1] = 8;
mina_tal [2] = 4 ;
mina_tal [3] = 17;
mina_tal [4] = 23;
mina_tal [5] = 2;
mina_tal [6] = 9;
mina_tal [7] =14;
mina_tal [8] = 7;
mina_tal [9] = 12;
mina_tal [10] = 7;
int.parse console.Readline());

en så länge har jag skrivit detta men , jag förstår inte om hur 1-25 skall slumpas fram

Du skulle göra mig väldigt glad genom att hjälpa mig med detta

Trädvy Permalänk
Medlem
Registrerad
Maj 2013
Skrivet av furkishhh:

@Pamudas:

Du har fullständigt rätt, jag vart sjuk ett tag och har inte lagt märke till uppgfiten .

https://dl.dropboxusercontent.com/u/78075226/programmering/Bi...

Det står nu skall 7 stycken tal mellan 1-25 slumpas fram.

Int[] mina_tal = new int [10]

mina_tal [0] = 20;
mina_tal [1] = 8;
mina_tal [2] = 4 ;
mina_tal [3] = 17;
mina_tal [4] = 23;
mina_tal [5] = 2;
mina_tal [6] = 9;
mina_tal [7] =14;
mina_tal [8] = 7;
mina_tal [9] = 12;
mina_tal [10] = 7;
int.parse console.Readline());

en så länge har jag skrivit detta men , jag förstår inte om hur 1-25 skall slumpas fram

Du skulle göra mig väldigt glad genom att hjälpa mig med detta

Antar att det är C#?
Prova använda Random-klassen.

using System.Random; Random rand = new Random(); // Skapar ett nytt Random-objekt. rand.Next(1, 25); // Slumpar ett tal mellan 1 och 25.

M-ITX: Fractal Design Node 304 Gigabyte H97N i7 4790k Msi GTX980 Gaming Ballistix Sport 16GB @ 1600MHz

Trädvy Permalänk
Medlem
Registrerad
Apr 2016

Tack man

@Pamudas:

Jag tackar dig <3

Trädvy Permalänk
Medlem
Registrerad
Maj 2013
Skrivet av furkishhh:

@Pamudas:

Jag tackar dig <3

Inga problem, se nu till att få A på den där uppgiften nu

M-ITX: Fractal Design Node 304 Gigabyte H97N i7 4790k Msi GTX980 Gaming Ballistix Sport 16GB @ 1600MHz

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2011

Ska det inte vara rand.Next(1, 26); om jag minns rätt.

Trädvy Permalänk
Medlem
Registrerad
Maj 2013
Skrivet av Snorren:

Ska det inte vara rand.Next(1, 26); om jag minns rätt.

Ger inte det ett tall från 1 till och med 26? Precis som man skriver 1 istället för 0?
*EDIT*
Du har helt rätt. Det övre är endast en gräns, det är TILL och inte TILL OCH MED.
Så det beror väl på hur läraren tycker det ska vara, om 25 är medräknat eller ej

M-ITX: Fractal Design Node 304 Gigabyte H97N i7 4790k Msi GTX980 Gaming Ballistix Sport 16GB @ 1600MHz

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2011

https://msdn.microsoft.com/en-us/library/2dx6wyd4%28v=vs.110%...

Return Value
Type: System.Int32

A 32-bit signed integer greater than or equal to minValue and less than maxValue; that is, the range of return values includes minValue but not maxValue.

http://www.dotnetperls.com/random