Permalänk
Medlem

C# Hjälp med loop

Jag ska göra ett program där användaren ska mata in 20 heltal. Frågorna ska ställas i en loop. Jag vill att efter varje användarinmatning så ska det komma upp en ny uppmaning att mata in ett nytt heltal. Alltså från början får användaren uppmaningen " Mata in ett heltal", när användaren gjort det och tryckt på Enter så ska användaren få uppmaningen " Mat in ett nytt heltal" osv tills användaren matat in totalt 20 heltal.
Jag har kommit fram till följande kod:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] tal = new int[20];
Console.WriteLine("Mata in ett heltal");
for (int i = 1; i <= 20; i++)
{
Console.WriteLine(i + "skriv in ännu ett heltal");

}
}
}
}
Med detta så kommer alla frågorna på en gång men det var ju inte min mening. Vad gör jag för fel ?

Permalänk
Skrivet av 105884:

Jag ska göra ett program där användaren ska mata in 20 heltal. Frågorna ska ställas i en loop. Jag vill att efter varje användarinmatning så ska det komma upp en ny uppmaning att mata in ett nytt heltal. Alltså från början får användaren uppmaningen " Mata in ett heltal", när användaren gjort det och tryckt på Enter så ska användaren få uppmaningen " Mat in ett nytt heltal" osv tills användaren matat in totalt 20 heltal.
Jag har kommit fram till följande kod:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] tal = new int[20];
Console.WriteLine("Mata in ett heltal");
for (int i = 1; i <= 20; i++)
{
Console.WriteLine(i + "skriv in ännu ett heltal");

}
}
}
}
Med detta så kommer alla frågorna på en gång men det var ju inte min mening. Vad gör jag för fel ?

Vill du inte göra något med arrayen "tal" du skapat? Antar att du vill lagra de inmatade talen där men du läser aldrig in något som användaren matar in.

Visa signatur

HTPC: Late 2014 Mac Mini
Bärbar: Mid 2012 MacBook Air

Permalänk
Medlem

Du måste spara ner talen till arrayen du har skapat.

Inuti for loopen ska du använda Console.ReadLine

Är inte helt 100% på C# men ungefär såhär.

tal[i] = Console.ReadLine();

Visa signatur

Main dator: i5 750 4Ghz, GTX 770 4GB, Intel SSD 80GB, 8GB Ram
Servern: Core 2 Duo, 4GB Ram, 4x2TB Lagring, Ubuntu Server 12.04

Permalänk

Som föregående talare men glöm inte int.Parse innan Console.ReadLine

Visa signatur

HTPC: Late 2014 Mac Mini
Bärbar: Mid 2012 MacBook Air

Permalänk
Medlem

Hur långt är koden korrekt ? Och jo, jag ska spara talen i en vektor.

Permalänk
Skrivet av 105884:

Hur långt är koden korrekt ? Och jo, jag ska spara talen i en vektor.

Fram till din FOR-loop, bearbetningen är fel. Ska se ut något i stil med:

int[] tal = new int[20]; Console.WriteLine("Mata in ett heltal"); for (int i = 0; i < tal.Length; i++) { tal[i] = int.Parse(Console.ReadLine()); Console.WriteLine("Mata in ytterligare ett heltal"); }

Visa signatur

HTPC: Late 2014 Mac Mini
Bärbar: Mid 2012 MacBook Air

Permalänk
Medlem

Supermotard Jag har provat lite mer nu och det funkade relativt bra. Frågan är nu hur jag undviker att komma out of range.....
Vad gör jag för att efter den 20 inmatningen få en textrad till användaren att " Nu har du matat in 20 heltal och det högsta helatlet är.." ?

Permalänk
Medlem
Skrivet av 105884:

Supermotard Jag har provat lite mer nu och det funkade relativt bra. Frågan är nu hur jag undviker att komma out of range.....
Vad gör jag för att efter den 20 inmatningen få en textrad till användaren att " Nu har du matat in 20 heltal och det högsta helatlet är.." ?

Se till att spara undan det största värdet som är inmatat undertiden du håller på att läsa in värdena i loopen. När du loopat klart är det bara att skriva ut värdet.

Om inte din lärare vill att du ska göra ytterliggare en loop och leta up högsta värdet i din array efter inmatningen.

Visa signatur

CPU: Intel Core i7 2600k MB: MSI P67A-GD65 GPU: EVGA GTX 780 Classified Sli RAM: Corsair Vengance 1600MHz 16GB SSD: Samsung EVO 240GB Samsung 850 Pro 256GB PSU: Corsair HX 750W Chassi: Corsair Obsidian 750D Kylning: Custom loop OS: Windows 8.1 Pro

Permalänk
Medlem

Hur sparar man undan det värdet ? Det har jag inte hört något om innan .

Permalänk
Medlem

Hur ser din kod ut just nu?
Svårt att säga vad som är fel utan senaste versionen.

Permalänk
Medlem

Så här ser den ut nu:

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] tal = new int[20];
Console.WriteLine("Skriv in ett heltal");
for (int i=0;i <= tal.Length; i++)
{
tal[i] = int.Parse(Console.ReadLine());
Console.WriteLine(i + "Skriv in ännu ett heltal");

}
}
}

Permalänk
Medlem

Jag hade tänkt loopa igenom vektorn för att hitta det största talet och därefter skriva ut det.

Permalänk
Medlem
Skrivet av 105884:

Hur sparar man undan det värdet ? Det har jag inte hört något om innan .

Jag är ganska säker på att du vet hur man sparar ett tal i en variabel. Det gör du t.ex när du skriver int i = 0 i for-loopen.

Alltså:

För varje iteration (loop), tills det att du når20 så ska du jämföra tidigare tal med det tal som precis förts in i din vektor och om detta är större än tidigare tal så "sparar" du undan det i en variabel.

Permalänk
Medlem

Vad gör jag för att efter den 20 inmatningen få en textrad till användaren att " Nu har du matat in 20 heltal och det högsta helatlet är.." ?
Därefter hade jag tänkt loopa igenom vektorn för att få fram det högsta talet och skriva ut det.

Permalänk
Avstängd

[ CODE ][ /CODE ] taggar är att rekommendera.

Visa signatur
Permalänk
Medlem
Skrivet av 105884:

Vad gör jag för att efter den 20 inmatningen få en textrad till användaren att " Nu har du matat in 20 heltal och det högsta helatlet är.." ?
Därefter hade jag tänkt loopa igenom vektorn för att få fram det högsta talet och skriva ut det.

Är ju bara att placera det efter din första loop.

typ

loop 20 times { fråga användaren efter ett heltal. spara talet i en arrayen. håll koll på högsta och minsta talet, spara i var sin variabel } skriv ut högsta och lägsta talet med writeline

Visa signatur

Fractal Design Node 304 -> ASUS ROG STRIX Z370-I GAMING ->i5 8600K -> be quiet! Pure Rock -> MSI GeForce RTX 4070 VENTUS 2X E 12G OC -> Corsair Vengeance LPX 3200 32GB -> Seasonic FOCUS Plus 650W Gold -> Samsung 960 EVO 500GB -> 2 * Western Digital Black 2 TB -> Samsung 850 EVO Basic SSD 500GB

Permalänk
Medlem

Jag förstår ändå inte ! Och jag vill bara loopa igenom vektorn efter det största talet.

Permalänk
Avstängd

namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int[] tal = new int[20]; Console.WriteLine("Skriv in ett heltal"); for (int i=0;i < tal.Length; i++) { tal[i] = int.Parse(Console.ReadLine()); Console.WriteLine(i + "Skriv in ännu ett heltal"); } } }

Det skall vara < tal.Length inte <=

Visa signatur
Permalänk
Medlem

Tack !
Men hur får jag in den sista meningen och sorteringen jag vill ha " Det högsta nummer du matat in är .." ?

Permalänk
Skrivet av 105884:

Tack !
Men hur får jag in den sista meningen och sorteringen jag vill ha " Det högsta nummer du matat in är .." ?

Lägg till en if-sats i din for-loop och använd en variabel som håller i det högsta talet. Om du läser en programmeringskurs måste du väl ha någon bok och föreläsningsmaterial på hur t.ex. selektion och iteration fungerar? Annars kan du kolla thenewboston.org's C# tutorials för vi ska inte behöva lösa hela uppgiften åt dig Traggla på bara!

Visa signatur

HTPC: Late 2014 Mac Mini
Bärbar: Mid 2012 MacBook Air

Permalänk
Medlem
Skrivet av 105884:

Vad gör jag för att efter den 20 inmatningen få en textrad till användaren att " Nu har du matat in 20 heltal och det högsta helatlet är.." ?
Därefter hade jag tänkt loopa igenom vektorn för att få fram det högsta talet och skriva ut det.

Dumt att loopa igenom vektorn för att få fram det största talet, tar bara en massa extra tid. Allt du egentligen behöver göra är att jämföra det tal som användaren skriver in mot det nuvarande "största talet". Du behöver då lagra det nuvarande största talet i en variabel. Om talet som användaren skrivit in är större än det "största talet" skriver du över variabeln med det tal användaren angav. Och så fortsätter du så... På slutet kommer du då ha sparat ner det största tal och behöver bara printa ut värdet för variabeln.

Visa signatur

Citera för svar!

Stationär: Fractal Design Define R6 | Asus Z370-P | Intel i7 8700k @ 3.7 Ghz | Corsair Vengeance LPX 32GB CL15 @ 3000 Mhz | Asus STRIX GTX960 4GB | Fractal Design Celsius S24 | 5 TB HDD | 250GB SSD (Samsung 850 EVO), 128GB SSD (Crucial M4) | Corsair HX 850W | W10
Bärbar: Sony Vaio Pro 13.3" | i7-4500U | 8GB RAM | 256GB SSD | Ubuntu

Permalänk
Medlem

Och hur gör jag det ????

Permalänk
Medlem
Skrivet av 105884:

Och hur gör jag det ????

Nu ber du ju folk göra hela din skoluppgift utan att ens försöka själv...

Visa signatur

i7 8700k @ 4.7GHz | NH-L12 | ASUS Z270i ROG Strix Gaming | EVGA 1080 FTW | 32GB Corsair Vengeance 3000MHz | Samsung 970 Evo M.2 500GB, 840 250GB, Crucial MX500 2TB | Loque Ghost S1 | XB271HU | QX2710 | U2412M | U2719D | Filco Majestouch 2 MX Brown TKL

Permalänk
Avstängd

google it

Visa signatur
Permalänk
Medlem

Finns det någon som kan tala om hur jag sparar de inmatade talen i en vektor ?

Permalänk
Medlem
Skrivet av 105884:

Finns det någon som kan tala om hur jag sparar de inmatade talen i en vektor ?

Den koden har du redan fått.

Visa signatur

i7 8700k @ 4.7GHz | NH-L12 | ASUS Z270i ROG Strix Gaming | EVGA 1080 FTW | 32GB Corsair Vengeance 3000MHz | Samsung 970 Evo M.2 500GB, 840 250GB, Crucial MX500 2TB | Loque Ghost S1 | XB271HU | QX2710 | U2412M | U2719D | Filco Majestouch 2 MX Brown TKL

Permalänk
Medlem

Finns det någon som kan tala om hur jag sparar de inmatade talen i en vektor ?? ???

Permalänk
Medlem
Skrivet av 105884:

Och hur gör jag det ????

Om du nu vet hur en for-loop fungerar måste du väl ändå veta hur en if-sats fungerar och hur man deklarerar en variabel? Tycker att du fått tillräckligt informativa svar för att skriva kod som gör det du vill. Antingen med hjälp av att lagra talen i en vektor och plocka det största, eller genom att spara det största talet i en variabel (vilket är det klart bättre alternativet om nu inte uppgiften går ut på att använda just vektorer). Nu har jag aldrig programmerat i C# så har inte dunderkoll, men ett sätt är ju att sätta upp ytterligare en for-loop som går igenom alla värden i vektorn och jämföra det mot en variabel som innehåller det tidigare största värdet (ungefär som jag har beskrivit att du skall göra från början, d.v.s. skippa att använda en vektor och istället endast köra på if-sats och jämföra värdet användaren skrev in mot det tidigare största värdet).

Om jag får fråga, är det en skoluppgift? Om så är fallet verkar det vara ett himla konstigt upplägg från lärarens sida om ni nu ännu inte vet hur en if-sats fungerar och hur man deklarerar variabler.

Visa signatur

Citera för svar!

Stationär: Fractal Design Define R6 | Asus Z370-P | Intel i7 8700k @ 3.7 Ghz | Corsair Vengeance LPX 32GB CL15 @ 3000 Mhz | Asus STRIX GTX960 4GB | Fractal Design Celsius S24 | 5 TB HDD | 250GB SSD (Samsung 850 EVO), 128GB SSD (Crucial M4) | Corsair HX 850W | W10
Bärbar: Sony Vaio Pro 13.3" | i7-4500U | 8GB RAM | 256GB SSD | Ubuntu

Permalänk
Avstängd

Det är garanterat en skoluppgift.

Visa signatur
Permalänk
Medlem

Tycker det är lite beklämmande när så många hjälper till, och det finns ungefär noll intresse att förstå och försöka själv.