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();
}
}
}}
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("...");
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();
}
}
}}
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.
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?
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).
Har jag missuppfattat uppgiften? Eller "uppmärksammar" jag endast och utelämnar att skriva ut alla tal i vektorn?
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.
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 ^^
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]);
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
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]);
}
}}
}
}}
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.
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.
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]);
}
}
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]);
}
}
}
}
}
Formatera koden med korrekta indrag!
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]);
}
}
}
}
}
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.
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 ^^