Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


resetta eller bryta en funktion

Postades av 2004-05-20 20:13:26 - Ted Johansson, i forum c++, Tråden har 16 Kommentarer och lästs av 1057 personer

Hej allihopa jag har ett litet problem som jag inte kan hitta en lösning, (ganska självklart att jag skriver här då hehe).

först kod exemplet sen problemet

kode är som följande:

void nytt()
{
char name[101];
cout << "mata in ditt namn: ";
cin.getline(name, 101);

if ((strcmp(name, "oj")==0))
nytt();

//punk #2

......

}

mitt problem är det att jag vill ju att den som skriver oj (eller bryter mot något annat argument jag kanske skulle skriva) ska ha en chans att försöka igen men genom att köra om funktionen igen så kommer programmet när den är klar med den funktionen sedan fortsätta från punkt #2 och då med andra ord köra allt som är efter punkt #2 två eller flera ggr (beroende på hur många gånger man skriver fel).

Hur ska jag göra, snälla ni gör mig en sån svinskän tjänst om ni kan hjälpa mig! bara att ni läst detta bugar jag för!! =)

Mvh
Ted


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-20 21:54:48 - Simon Dahlbacka

du läser in din data i en loop, tex så här

void nytt()
{
char name[101];
do {
cout << "mata in ditt namn: ";
cin.getline(name, 101);
} while (strcmp(name, "oj") == 0));
}


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-20 22:51:47 - Ted Johansson

jo iofs, det var ju ett bra sätt, jag håller på att skriva om mitt programm nu men jag kom på en sak

jag kom på: jag har/hadde en möjlighet att man kunde skriva så gick han till(baka) till funktionen huvudmeny(); men hur ska jag impletera den i en while loop. Jag kan ju skriva allt argument och om något inte fylls så blir t.ex. fel=1 (fel =vad while loopen är beroende på).

Mvh
Ted


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 06:26:47 - Niklas Jansson

Du tänker fel!
Utgå inte ifrån "hur löser jag det?", utan börja med att förstå vad sakerna gör.
Syftet med en while-loop är att upprepa något så länge något villkor är uppfyllt, syftet med en funktion är att göra en _väl_ avgränsad procedur. En funktion ska ha en klar uppgift, och ska bara utföra den uppgiften.
Du ska inte "gå tillbaka till funktionen", men du kanske ska anropa funktionen igen. Ett enkelt consoleprogram kan t.ex. se ut så här:

int main()
{
ShowMenu();
std::string s = GetName();
while(s!="oj");
{
DisplayName(s);
s=GetName();
}
}

Och sen lägger du in vettiga funktioner.


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 08:21:23 - Ted Johansson

jo jag vet de! =))

men hur ska jag annars lösa det? du hade inte du en lösning eller kom du bara för att säga det där?

hur är det med den där goto syntaxen, typ sätt en bestämd punkt och sedan goto till den? börjar prorgammet om där ifrån då?

jag läste att den bestämda punkten endast kunde vara innom samma funktion men med den kan man iaf hoppa över saker verkar det som! Finns det någon annan bättre lösning? Jag vill ju hoppa till en bestämd plats i programmet.

Tack på förhand!

Mvh
Ted


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 09:03:03 - Per Malmén

Använd INTE goto!!! Redan på 60-talet insåg man att goto är roten till massor av problem i programutveckling. Koden blir svårläst och ostrukturerad. Om du känner ett behov av astt använda goto för att göra det du vill bör du tänka om. Troligtvis är designen fel och behöver göras om.
/Per


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 09:13:56 - Ted Johansson

jo men finns det inget som helst sätt att gå till olika platser i ett program?


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 14:31:51 - Niklas Jansson

>du hade inte du en lösning eller kom du bara för att säga det där?
Jag har inget färdigt program som gör just det du vill göra, eftersom jag inte är helt säker på vad det är du vill göra. Jag kom för att "bara säga" att du är på fel väg; tänk om enligt den principen jag sa!

>jo men finns det inget som helst sätt att gå till olika platser i ett program?
Det var ju precis det som var min poäng!
TÄNK INTE PÅ DET SÄTTET!

Du ska istället tänka strukturerat. Dela in programmet i mindre delar: Vad ska programmet göra?
Så som jag förstod det skulle en användare först skriva in en sträng, tills den skriver in rätt, sen skriva in en annan sak tills det blir rätt osv.

Då kan du fundera; är det fundamentalt olika saker som ska skrivas in, så passar det bäst med något i stil med:

while(felsträng1)
nyindata1;

while(felsträng2)
nyindata2;

while(felsträng3)
nyindata3;

Finns det istället en vettig uppsättning frågor som är likadana skriver du nåt i stil med

for(i=1; i<3; i++)
{
insträng=indata(i);
while(insträng inte är ok)
insträng=indata(i);
}

Det är klart att vi kan säga att "du kan skriva Position1: och sen skriva goto Position1; om du har allt i main", men det fullständigt jävla vansinnigt, så lyssna istället på vad vi säger!


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 14:36:45 - Ted Johansson

Men det här är ett riktigt STORT program!! De måste kunna hoppa från t.ex. menyer tillbaka till en annan meny!

Hur ska jag klara av de?


En fråga till faktiskt: Under vilka former och/eller omständigheter skulle det bli fel när man använde goto pos? Om man vet vad man gör och inte missar något utan endast börjar om funktionen så kan det ju inte göra något, eller hur?

Mvh
Ted


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 20:00:22 - Niklas Jansson

<b>>Men det här är ett riktigt STORT program!!</b>
I förhållande till ganska mycket annan kod så tror jag faktiskt det är ett förhållandevis litet program...
Och varför säger du det, är det för att du inte orkar skriva om det?
Eller är det för att det inte skulle kunna gå med den approachen jag säger?

<b>> De måste kunna hoppa från t.ex. menyer tillbaka till en annan meny!</b>
Återigen: du tänker på fel sätt!

<b>>En fråga till faktiskt: Under vilka former och/eller omständigheter skulle det bli fel när man använde goto pos? Om man vet vad man gör och inte missar något utan endast börjar om funktionen så kan det ju inte göra något, eller hur?</b>
Det är inte det att det automatiskt blir fel för att man använder goto. Problemet är att det har många extremt stora nackdelar att programmera och tänka på det sättet. Om du nu skriver så, så kan det vara så att det funkar JUST NU.
Men om du vill ändra en liten grej - då kan hela programmet sluta fungera för att du använde en goto. Och det är inte så att du inte kommer ändra något, även om du tror det, program ändras alltid.
Samma sak med "om man vet vad man gör". Det är väldigt lätt att tro det, men det är inte så.

Man kan ta en parallell till en fabrik. Om man gör på det sättet du har tänkt så kan man se det som att det står folk utspridda över ett fabriksgolv, alla gör något, och de skickar saker mellan sig. Det kan funka, om alla bara har rätt instruktioner och inget behöver ändras. Så fort något behöver ändras så får alla nya instruktioner och det blir fel om man inte kollar att alla verkligen gör rätt.
Den lösning jag föreslår är att man har tydlig avdelningar. En avdelning sköter en viss sak, en annan gör en annan, osv. Blir det fel i någon avdelning byter man ut den. Det är hur enkelt som helst att veta var ett problem uppstår, och det räcker att fixa just det problemet, och det är det enda som behövs göras.


Säg istället vad ditt program ska göra och arbeta utifrån det.

Jag kan ge ett tips: använd notepad eller något annat enkelt. Skriv vad du programmet ska göra; kort och koncist. Sen delar du upp det i delar. Sen går du igenom varje av de delarna och tänker "är det här en självklar egen del av programmet?". I så fall så är det en funktion. Är det inte det så delar du upp den delen och tittar på samma sätt på varje liten del, osv.

Det låter som om det inte behöv


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 21:07:14 - Ted Johansson

Lite kaxig är du iaf! =))

humf

men men, kan en funktion retunera char?


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 21:21:28 - Peter Larsson

>men men, kan en funktion retunera char?
Ja, en funktion kan returnera vilket datatyp som helst.

/Peter


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 22:55:17 - Niklas Jansson

<b>>Lite kaxig är du iaf! =)) </b>

Jag vet att det kan låta lite hårt men eftersom jag skrev mitt första kodrad för typ15-16 år sen, och eftersom jag inte fick veta hur man borde göra fick jag lära mig det den hårda vägen. Det är viktigt att man hajar vilken princip man bör följa, för annars blir det fel direkt.
Att använda goto och liknande är den mest grundläggande formen av programmering. Den högre graden av programmering kallas för "strukturerad programmering", och det är det man använder när man skriver t.ex. while, for osv. I den nivån behöver man _aldrig_ använda saker som goto.
Ett steg ytterligare högre är "funktionell programmering", och det är då man använder funktioner. I varje funktion använder man sen funktionell programmering eller strukturerad programmering, tills man har löst problemet.
Ytterligare en nivå är objektorienterad programmering, OOP, då det är väldigt mycket abstraktare. Å andra sidan är det mycket effektivare att arbeta med, mycket lättare, och ger bättre resultat.

Så lita på det jag säger och ställ din fråga utfrån det synsättet.

Det är för din skull jag säger det här; jag själv har ingen större nytta av att svara på frågor, jag gör det bara för att jag tycker det är kul att hjälpa till. Men jag kan inte hjälpa till om det är från fel utgångspunkt...


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 23:35:12 - Ted Johansson

Peter: Hur gör man det? int vet jag, men det enda settet jag kan få att funka med att retunera en char är att deklarera dunktionen som string och sedan retunera en string

finns det något annat lättare sätt?


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-21 23:40:20 - Ted Johansson

#1 är det okey om man använder sig av return då?

#2 hur skulle du göra om du skulle vilja börja om från början i en funktion?

t.ex. om du har en massa babbel och så en fråga if (blablabla)
{
vad skulle du skriva här för att få starta om funktionen?
}


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-22 09:49:22 - Ted Johansson

hej igen!

jag har sovit på de du sagt Niklas och nu förstår jag, tack så mycket för det där snacket om funktioner!! När jag sa att programmet ÄR stort menade jag mer att programmet KOMMER bli stort, det har lixom väldigt stora potentialer att bli stort (asså massa kod, vi snackar mängder) så det där snacket med funktioner var riktigt snällt!!!

har du icq eller msn eller nått sådant?
skulle vara kul att få lära känna dig! One programmer to another!

Mvh
Ted


Svara

Sv: resetta eller bryta en funktion

Postades av 2004-05-22 11:56:35 - Niklas Jansson

Skönt att du inte tog det så hårt, det är bättre att få rätt från början än att utgå från fel sätt. Visst, det är bra att lära sig så mycket som möjligt, men det är samtidigt så att det är bättre att lära sig rätt och grundläggande än fel och bara göra det knöligt för sig.

Jag har för vana att inte lämna ut mitt ICQ-nummer, men jag kan göra ett undantag. Du får det på iMail (alltså mailgrejen på pellesoft).


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 616
27 953
271 709
5 738
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies