16 svar
86 visningar
Shali_47 71
Postad: 17 nov 20:33

Arrayer

Jag vill att användaren matar in ett antal namn i listan. Tillslut vill jag att programmet fråga användaren om en valfritt namn. Och när användaren har skrivit valfritt namnet då ska programmet berätta hur många gånger namnet har kommit från det tidigare namnListan:

Programmet som jag skrev:

 

string[] namnArray = new string[10];

Console.WriteLine("Skriv all dina namn nedan");

for (int i = 0; i < namnArray.Length; i++)

{


Console.ForegroundColor = ConsoleColor.Yellow;
namnArray[i] = Console.ReadLine();

Console.ForegroundColor = ConsoleColor.White;
Console.Write("Vill du skriva en till namn? ");

Console.WriteLine("\n");

}

Console.WriteLine("Skriv en valfri Namn:");
string valfri = Console.ReadLine();

..........🙁................

något tips please!

Dracaena 6563 – Moderator
Postad: 17 nov 20:47

Loopa igenom listan och räkna hur många gånger "valfri" förekommer.

Shali_47 71
Postad: 17 nov 20:50

har inte uppfattad! 

Laguna Online 22262
Postad: 17 nov 21:00

Det är onödigt att fråga om användaren vill mata in en sträng till när den inte har något val. Man matar alltid in 10 strängar.

Shali_47 71
Postad: 17 nov 21:08

Det är det uppgiften som formulerade så, och jag funderade på att skapa en nej eller ja metod så att det blir med ja försätt och med nej skulle programmet fråga om en valfritt namn:

Dracaena 6563 – Moderator
Postad: 17 nov 21:09

bifoga gärna uppgiften. :)

Vet du hur man skriver ut element 0,1,2,3... en i taget med console.Write()?

Shali_47 71
Postad: 17 nov 21:10

Många namn

Skapa ett program där användaren får mata in så många namn som hen vill upp till ett maximalt antal av 200. Användaren ska inte behöva bestämma hur många namn hen vill mata in i förväg, fråga i stället efter varje inmatat namn om hen vill mata in ett till namn.

Efter att användaren har matat in alla namn så ska hen få skriva in valfritt namn, programmet ska berätta hur många gånger detta namn förekommer i listan av de tidigare inmatade namnen.

Här är frågan som ställdes!

Dracaena 6563 – Moderator
Postad: 17 nov 21:13 Redigerad: 17 nov 21:14

Du har inte riktigt gjort rätt.

Du borde ha en while loop som loopar så länge användaren vill ange ett nytt namn.

Just nu tvingar du användaren att alltid ange 10 namn.

Shali_47 71
Postad: 17 nov 21:25

Jag fastnade i den sista uppgiften med många försök:

Laguna Online 22262
Postad: 17 nov 21:58
Shali_47 skrev:

Jag fastnade i den sista uppgiften med många försök:

Ska det stå mer än en rad här? Jag ser inte mer.

Dracaena 6563 – Moderator
Postad: 18 nov 16:46 Redigerad: 18 nov 16:48

Även trots det kanske inte är optimalt, så är det kanske lättast att göra arrayen så pass stor att den kan rymma 200 namn.

En do/while loop hade varit suverän här. 

Välj något ord, typ "klar" för att bryta loopen:

Låt loopen köras så länge man inte skrivit in 200 namn, eller tills användaren skriver "klar".

Börja där. Om du inte har en aning om vad det är jag pratar om, börja här:

https://www.w3schools.com/cs/cs_while_loop.php

Om något är oklart, så skriv här så försöker vi formulera det på ett tydligare sätt.


Om du vill vara mer fancy kan du lyssna efter ett knapptryck som bryter loopen, men det är isf något du borde kika på efter du har löst uppgiften.

Shali_47 71
Postad: 18 nov 20:32 Redigerad: 18 nov 20:39

Menar du att in i while loopen behöver jag sedan skapa en if sats för att jämföra för användaren om hen vill försätta eller göra klar sin inmatning eller?

 

exempelvis: 

deklarering av en int med värdet 0

while 

int namn < 200 

string bla = console.readline();

här ska jag kommentera för hen "skriv nej om du inte vill försätta med inmatningen"

int namn++;

👇

här menar jag om  jag vill skapa en if sats som kan jämföra on hen inte vill försätta:

tex: 

if bla == "nej"

ok då skriv en valfritt namn 

 

 

Dracaena 6563 – Moderator
Postad: 18 nov 22:27 Redigerad: 18 nov 22:48

Ja, så kan du göra, men det som är bra med en do while loop är att du vill just köra minst en gång innan användaren får ett alternativ.

Här har du en liten mall med lite instruktioner.

	public static void Main(string[] args)
	{
		// Skapa din array
		// skapa andra användbara variabler
		do
		{
			// Ta emot input
			// lägg till i arrayen
			// öka i

		}
		while (i < 200 && ...);
	}

Du kan så klart ändra "klar" till vad du vill.

Din metod fungerar också, men tänk då på att du måste använda Equals och inte == för att jämföra strängar. s1==s2 gör inte vad du tror den gör, utan den jämför om dessa två strängar har samma minnesadress, vilket de aldrig kommer att ha om inte s1=s2. Du vill veta om värdet är densamma i strängarna, varav du måste använda Equals.

Shali_47 71
Postad: 21 nov 20:18

In i do blocket 

if(string name == "nej"){

console.writeline("Då skriv en valfritt namn");

string valfri = console.readline();

hur skulle jag forklara programmet medan användaren skriver en valfritt namn, då programmet ska berätta hur många gånger namnet har kommit från deta tidigare namnListan. 

}

Shali_47 71
Postad: 21 nov 20:28

do 

ber användaren att inmata sina namn

skriv ut "Vill du inmata en till, Annars skriv nej"

variabel namn++;

om användaren skriver nej

skriv ut "Då skriv en valfritt namn"

//Här behöver jag en till sträng variabel som användaren skulle inmata sitt valfritt rätt?

//När användaren har skrivit sitt valfritt 

den del?

Skriv ut "namnet du skrev har kommit så många gånger" + " från det tidigare namnListan"

 

 

medan variabel namn < 200;

Dracaena 6563 – Moderator
Postad: 21 nov 20:43 Redigerad: 21 nov 20:44

du behöver inte ha en if-stats i do-blocket. Om du kollar i while-loopen så har jag hintat att du skall ha ett till condition.

en do while fungerar så här:

 

Utför do blocket

Kolla conditions

Utför do blocket

Kolla conditions

.

.

.


Användaren måste ange minst ett namn, annars är det rätt meningslöst.

Användaren anger namn ett:
är i < 200? Ja. Har användaren ... ?
Skriv in ett nytt namn...

.

.

.


Hänger du med på varför du inte behöver en if-sats? 

Du hade endast behövt en if-sats om du vill kunna bryta dig ur programmet utan att man angett ett enda namn, men jag tycker det är meningslöst att köra då.

Shali_47 71
Postad: 23 nov 17:07

använde break i min första forloop sedan hade jag skapat en sökning som skulle jämföra namnet från det tidigare namnListan, Känns bra och då släpper jag också tvinga användaren för inmatningen. Bra du sagt i början och kände också tvingande när jag som användaren använde programmet!

Svara Avbryt
Close