19 svar
309 visningar
Fifakungen behöver inte mer hjälp
Fifakungen 41
Postad: 19 feb 2022 22:45

Vektor Skriv ut och jämför

Hejsan ! Håller på med en uppgift i programmering 1.

Denna uppgift bygger vidare på föregående uppgift.

Deklarera en variabel med ett heltal.

Skriv ut alla värden ur vektorn med en loop.

Om något tal i vektorn är lika med heltalet i den nya variabeln så ska detta uppmärksammas.

 

Men har kört fast lite då programmet inte skriver ut det jag vill till användaren

Här är min kod hittils :) Tack på förhand

{
	class Program
	{
		public static void Main(string[] args)
		{
			
			int helTal = 17;

Console.WriteLine("Hej ! Skriv in tio hel tal"); //Ber användaren efter 10 värden till talen

string iN = Console.ReadLine();
int nummer = Convert.ToInt32(iN); //Gör om 


int[] tal = new int[10]; // Skapar vektorn
for (int i = 0; i < tal.Length; i++) //Loopar
{
Console.WriteLine("Ditt tal:");
tal[i] = Convert.ToInt32(Console.ReadLine()); 
}

for (int i = 0; helTal == i; i++) // Loopar
{
Console.WriteLine("Du skrev in ett matchande tal!");
Console.ReadLine();

 
			
			
			
			
		
			
		}
	}
	}}
Fermatrix 7841 – Fd. Medlem
Postad: 19 feb 2022 22:51

När du loopar igenom arrayen och skriver ut de så kan du lägga till en if-sats:

if (tal[i] == helTal) Console.WriteLine("...");
Fifakungen 41
Postad: 19 feb 2022 23:14

Får det fortfarande inte att skriva ut det i consollen även fast jag skriver in 17 

Uppdaterad kod

		public static void Main(string[] args)
		{
			
			int helTal = 17;

Console.WriteLine("Hej ! Skriv in tio hel tal"); //Ber användaren efter 10 värden till talen

string iN = Console.ReadLine();
int nummer = Convert.ToInt32(iN); //Gör om 


int[] tal = new int[10]; // Skapar vektorn
for (int i = 0; i < tal.Length; i++) //Loopar
{
Console.WriteLine("Ditt tal:");
tal[i] = Convert.ToInt32(Console.ReadLine()); 
}

for (int i = 0; helTal == i; i++) // Loopar
{
	if (tal[i] == helTal) Console.WriteLine("Du skrev in ett matchande tal!...");
Console.WriteLine("Du skrev in ett matchande tal!");
Console.ReadLine();

 
			
			
			
			
		
			
		}
	}
	}}
Fermatrix 7841 – Fd. Medlem
Postad: 19 feb 2022 23:40

Du borde fixa din indentering, det blir enklare att följa din kod. 

Din andra for-loop stämmer inte, du säger att du vill loopa om helTal == i är sant, men det vill vi ju inte göra. Vi vill göra precis som du gjorde innan, loopa så länge i < tal.Length. 

Fifakungen 41
Postad: 20 feb 2022 10:04 Redigerad: 20 feb 2022 10:04
		public static void Main(string[] args)
		{
			
int helTal = 17;

Console.WriteLine("Hej ! Skriv in tio hel tal"); //Ber användaren efter 10 värden till talen

string iN = Console.ReadLine();
int nummer = Convert.ToInt32(iN); //Gör om 
int[] tal = new int[10]; // Skapar vektorn
for (int i = 0; i < tal.Length; i++) //Loopar
{

	Console.WriteLine("Ditt tal:");
tal[i] = Convert.ToInt32(Console.ReadLine());

}

for (int i = 0; i < tal.Length; i++) // Loopar
{
	
if (tal[i] == helTal) Console.WriteLine("Du skrev in ett matchande tal!...");

Console.ReadLine();		
	}
	}
	}}

Så vad tycks nu? Nu skriver den ut " Du skrev in ett matchande tal! "  Bör man lägga till en else efter if, typ du skrev inte in ett matchande tal? 

Programmeraren 3389
Postad: 20 feb 2022 10:23 Redigerad: 20 feb 2022 10:24

Det ser nog grötigt ut men du ska ju skriva ut alla tal i vektorn, åtminstone står det så i frågan  (och "uppmärksamma" det som är lika med ditt tal).

Fifakungen 41
Postad: 20 feb 2022 10:29

Har jag missuppfattat uppgiften? Eller "uppmärksammar" jag endast och utelämnar att skriva ut alla tal i vektorn?

Programmeraren 3389
Postad: 20 feb 2022 10:36 Redigerad: 20 feb 2022 10:37

Ja, men bara en detalj.

"Skriv ut alla värden ur vektorn med en loop. Om något tal i vektorn är lika med heltalet i den nya variabeln så ska detta uppmärksammas."

Detta tolkar jag som att du ska skriva ut alla talen.
Dvs din if-sats ska ha en "else" som skriver ut endast talet.

Sen förstår jag inte vad din sista Readline() ska vara till.

Fifakungen 41
Postad: 20 feb 2022 10:40

Så ändra min if till "skriva ut värden ur vektorn" och else " du skrev in ett matchande tal " ? :) Den sista ReadLine() ligger kvar efter ja provat massa saker men den ska bort ^^ 

Programmeraren 3389
Postad: 20 feb 2022 10:44

Du frågade i #5 om du skull ha en else och jag menade att du bör ha det som bara skriver ut talet utan kommentar:

if (tal[i] == helTal)
  Console.WriteLine("Du skrev in ett matchande tal till " + helTal);
else
  Console.WriteLine(tal[i]);

Fifakungen 41
Postad: 20 feb 2022 10:58

Hej ! Skriv in tio hel tal
1
Ditt tal:
2
Ditt tal:
3
Ditt tal:
4
Ditt tal:
5
Ditt tal:
6
Ditt tal:
7
Ditt tal:
8
Ditt tal:
9
Ditt tal:
10
Ditt tal:
11
2

Får denna utskrivt i consollen, om jag endast skriver in 17 får jag

Hej ! Skriv in tio hel tal
17
Ditt tal:
17
Ditt tal:
17
Ditt tal:
17
Ditt tal:
17
Ditt tal:
17
Ditt tal:
17
Ditt tal:
17
Ditt tal:
17
Ditt tal:
17
Ditt tal:
17
Du skrev in ett matchande tal till 17

Fifakungen 41
Postad: 20 feb 2022 11:27

Gör jag såhär så får jag (CS1525) på raden med else, hmm

		public static void Main(string[] args)
		{
			
int helTal = 17;

Console.WriteLine("Hej ! Skriv in tio hel tal"); //Ber användaren efter 10 värden till talen

string iN = Console.ReadLine();
int nummer = Convert.ToInt32(iN); //Gör om 
int[] tal = new int[10]; // Skapar vektorn
for (int i = 0; i < tal.Length; i++) //Loopar
{

	Console.WriteLine("Ditt tal:");
tal[i] = Convert.ToInt32(Console.ReadLine());

}

for (int i = 0; i < tal.Length; i++) // Loopar
{
	
if (tal[i] == helTal)
{

{Console.WriteLine("Du skrev in ett matchande tal till " + helTal);
}
	
else
	
{
Console.WriteLine(tal[i]);

}

}}
	}
	}}
Programmeraren 3389
Postad: 20 feb 2022 11:36 Redigerad: 20 feb 2022 11:39

Som du ser matar du in 11 tal. Du har en extra Readline innan loopen som tilldelas variabeln nummer. Den används inte. Ser ut som rest från ett tidigt försök.

Felet i den andra loopen beror på att du inte formaterat din kod så att den blir läsbar. Gör det först. Du har en extra "{" mellan if och Console.WiteLine(), sådana fel syns direkt när koden skrives med korrekta indrag.

Fifakungen 41
Postad: 20 feb 2022 11:53

Ser detta "bättre" ut? Fan de e krångligt å "komma" in i tänket. Får dock den inte att skriva ut alla tar i vektorn? Du är grym programmeraren! Uppskattar verkligen hjälpen extremt mycket.

Programmeraren 3389
Postad: 20 feb 2022 11:58 Redigerad: 20 feb 2022 11:58

Du verkar inte ha postat någon ny version.

Exempel på formatering:
for (int i = 0; i < tal.Length; i++) { // Loopar
  if (tal[i] == helTal) {
    Console.WriteLine("Du skrev in ett matchande tal till " + helTal);
  } else {
    Console.WriteLine(tal[i]);
  }
}

Fifakungen 41
Postad: 20 feb 2022 11:59

Oj missade det ^^

		public static void Main(string[] args)
		{
			
int helTal = 17;

    Console.WriteLine("Hej ! Skriv in tio hel tal"); //Ber användaren efter 10 värden till talen



int[] tal = new int[10]; // Skapar vektorn
for (int i = 0; i < tal.Length; i++) //Loopar
{

	Console.WriteLine("Ditt tal:");
tal[i] = Convert.ToInt32(Console.ReadLine());

}

for (int i = 0; i < tal.Length; i++) // Loopar
{
	
if (tal[i] == helTal)

{
     Console.WriteLine("Du skrev in ett matchande tal till " + helTal);
}
	
else
{

     Console.WriteLine(tal[i]);
}

}


	
}
}
}
Programmeraren 3389
Postad: 20 feb 2022 12:02

Formatera koden med korrekta indrag!

Fifakungen 41
Postad: 20 feb 2022 12:12

Nu så får jag denna utskrift i consollen:

Hej ! Skriv in tio hel tal
Ditt tal:
1
Ditt tal:
2
Ditt tal:
3
Ditt tal:
4
Ditt tal:
5
Ditt tal:
6
Ditt tal:
7
Ditt tal:
17
Ditt tal:
4
Ditt tal:
5
1
2
3
4
5
6
7
Du skrev in ett matchande tal till 17
4
5

Koden ( Ser bättre ut? ) ^^

{
	class Program
	{
		public static void Main(string[] args)
		{
			
int helTal = 17;

    Console.WriteLine("Hej ! Skriv in tio hel tal"); //Ber användaren efter 10 värden till talen


int[] tal = new int[10]; // Skapar vektorn
for (int i = 0; i < tal.Length; i++) { //Loopar


	Console.WriteLine("Ditt tal:");
    tal[i] = Convert.ToInt32(Console.ReadLine());

}

for (int i = 0; i < tal.Length; i++) { // Loopar
  if (tal[i] == helTal) {
    Console.WriteLine("Du skrev in ett matchande tal till " + helTal);
  } else {
    Console.WriteLine(tal[i]);
  }
}



	
		}
	}
}
Programmeraren 3389
Postad: 20 feb 2022 12:38

Nu verkar programmet funka.

Koden ser bättre ut men kan förbättras mer.
Skriver du i någon editor för programmering eller en utvecklingsmiljö? I så fall fixar de till formateringen automatiskt. Skriver du i "notepad" eller liknande får man göra det själv men i praktiken är det för jobbigt.

Enkelt uttryckt ökar du indraget med 2 mellanlag för varje nivå (t ex "{").

Detalj: Jag programmerar inte i C# men behöver man verkligen ett par måsvingar utanför "class Program"? Ser onödigt ut.

Fifakungen 41
Postad: 20 feb 2022 12:42

Tack så mycket för hjälpen ! Skriver i SharpDevelop, min verkar inte fixa till det automatiskt, kanske ska prova något annat program kanske visual studios. 

När jag startar ett nytt projekt i consolle app, så är måsvingarna med från början så jag antar det ^^

Svara
Close