Nybörjare på programmering A c++?

Permalänk
Medlem

Vad har du testat hittills?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Testa först att loopa över hela strängen och skriv ut den en bokstav åt gången. Då lär du dig loopa. Försök därefter att hitta första mellanslaget (för jag antar det är så ni ska skilja förnamn från efternamn, det funkar inte med mitt namn men för de flesta andra går det ;P ). När du väl kan det, bör du kunna kombinera ihop det hela till något som loopar från första mellanslaget till slutet, och sedan från början till första mellanslaget.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Loopa över hela strängen?:O

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem

Alltså gå igenom strängen med hjälp av en loop som fortsätter tills hela strängen har blivit behandlad (i detta fall behandlas den ex. genom att skrivas ut baklänges).

Jag skulle förslå en for-loop då jag tycker det blir lätt att se syftet med en sådan. (färre kommentarer behövs.)

jdv; Så avancerat behöver det inte vara, Per Persson blir nossreP reP så det är bara att loopa igenom utan krusiduller.

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av pscs3

jdv; Så avancerat behöver det inte vara, Per Persson blir nossreP reP så det är bara att loopa igenom utan krusiduller.

Ah, trodde han var kvar på den förra uppgiften som gick ut på att läsa in förnamn och efternamn i ett svep, och sedan skriva ut efternamnet före förnamnet

Då är det enklare, loopa baklänges som sagt var.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Såhär ser det ut nu. Fick börja om med hjälp av sträng. Ser ut på följande sätt:

#include <iostream>
#include <string>
using namespace std;

int main()
{
char namn [20];
strcpy(namn, "Richard");
cout << namn << " har " << strlen(namn)
<< " tecken.\n";
cout << "Richard blir baklanges";
cin.getline(namn, 20);

return 0;
}

Har kollat på youtube om for loop men fattar inte ett skvatt.
Ngn som kan hjälpa mig en bit så jag kommer igång med den?
Vet inte alls hur jag ska skriva

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem

En for-loop har formen

for(A; B; C) { ... }

A är kod som kommer köras en gång, innan loopen startar, t.ex int i = 0;
B är boolskt uttryck som säger om loopen ska fortsätta, t.ex. i < 2
C körs efter att en omgång av loopen körts, t.ex. ppi
... är själva joden för koopen

om man sätter in det i ett exempel blir det

for(int i = 0; i < 2; ++i) { cout << i << endl }

Först körs int i = 0
Sedan testas det om i < 2
Detta är sant, så i skrivs till cout
Därefter räknas i upp.
I är nu 1 och vi börjar om att testa om det är mindre än två, det är det så vi upprepar hela proceduren om och om igen tills att tested i < 2 är falskt.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Jag förstår ännu inte riktigt vart loopen ska läggas in? Är det i början av strlen eller vart?

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fammo
Jag förstår ännu inte riktigt vart loopen ska läggas in? Är det i början av strlen eller vart?

http://cplusplus.com/doc/tutorial/
Läs Introduction, Basics of C++, Control Structures och Compund Data Types. Alltså hela kapitlena.
För varje exempel ska du skriva ner ett eget, identiskt eller personligt, som gör samma sak och kommentera varje rad kod och beskriv i kommentaren vad den raden gör och varför.

Sedan kan du specificera mer exakt vad det är du inte förstår.

Om du ska lista ut var loopen ska vara så tänk på att ett c++-program generellt börjar i main-funktionen och fortsätter kontinuerligt nedåt och följer instruktionerna rad för rad (vilket i sig kan få koden att utföra instruktioner på andra ställen, ex. funktioner).

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem

Alltså det är bara loopen jag inte kan. Kontaktade läraren. Gjorde som han sa.
Ser ut såhär:

#include <iostream>
using namespace std;

int main()
{
cout << "Vad heter du? (fornamn och efternamn tack)";
char namn [20];
cin.getline(namn, 20);
cout << "Hej ditt namn ar " << namn;
int laengd;
laengd=strlen(namn);

return 0;
}

Efter laengd ska loopen börja. Loopen börjar alltså på laengd och slutar på 0 enligt vad han sa.
Men jag förstår inte hur den ska skrivas för att skriva namnet baklänges?
Pscs3 hur ska jag börja med loopen?

MVH

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem

Jag måste fråga igen: vad har du försökt med? Visst kan vi hjälpa till men för mig känns det i alla fall drygt att mata dig med lösningar när du inte lyfter ett finger. Vad sa din lärare om "loopen"? Han måste väl ha gett grundläggande information om vad en loop är..?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Nej det gjorde han inte.
Har skrivit allt själv, det är bara loopen jag har problem med :/.
Såhär skrev han:
Vi utgår från ditt tidigare program där inläsningen fungerar, Bygg vidare på det.
Sen skickade han en fil.
Där det står på följande:

#include <iostream>
using namespace std;

int main()
{
cout << "Vad heter du? (fornamn och efternamn tack)";
char namn [20];
cin.getline(namn, 20);
cout << "Hej, ditt namn är " << namn;

//Deklarera en heltalsvariabel, ex int laengd;

//Här tar du reda på antal tecken med strlen. laengd=strlen(namn);

//Här skapar du loopen som skriver ut namnet baklänges.
//Loopen börjar på laengd och slutar på 0.

return 0;
}

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem

Jag menade tidigare i kursen, loopar är väldigt grundläggande i näst intill all programmering. Googla på c++ loops och se om du inte kan hitta något matnyttigt där.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Faktiskt första gången jag använder mig utav det så det är nytt för min del om man säger så..
Aa får ta och kolla runt lite, har kollat lite tutorials men det är svårt att förstå tkr jag av ngn konstig anledning :/

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fammo
Faktiskt första gången jag använder mig utav det så det är nytt för min del om man säger så..
Aa får ta och kolla runt lite, har kollat lite tutorials men det är svårt att förstå tkr jag av ngn konstig anledning :/.
Verkar bara vara att man skriver typ Richard så skrivs Richard ut 10ggr lr liknande. Blir helt förvirrad när namnet ska skrivas ut baklänges

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fammo
Faktiskt första gången jag använder mig utav det så det är nytt för min del om man säger så..
Aa får ta och kolla runt lite, har kollat lite tutorials men det är svårt att förstå tkr jag av ngn konstig anledning :/.
Verkar bara vara att man skriver typ Richard så skrivs Richard ut 10ggr lr liknande. Blir helt förvirrad när namnet ska skrivas ut baklänges

Men då är du på helt rätt spår. Istället för att skriva ut hela namn varje gång så vill du skriva ut en bokstav i taget. Om du visar hur du skrivit loopar hittills så kan vi dissikera koden lite.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Såhär ser det ut då:
http://pici.se/541549/

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fammo
Men jag förstår inte hur den ska skrivas för att skriva namnet baklänges?
Pscs3 hur ska jag börja med loopen?

MVH

Jag tror jag får upprepa mig, gör som jag säger och jag hjälper dig sedan:

Citat:

http://cplusplus.com/doc/tutorial/
Läs Introduction, Basics of C++, Control Structures och Compund Data Types. Alltså hela kapitlena.
För varje exempel ska du skriva ner ett eget, identiskt eller personligt, som gör samma sak och kommentera varje rad kod och beskriv i kommentaren vad den raden gör och varför.

Sedan kan du specificera mer exakt vad det är du inte förstår.

En for-loop brukar beskrivas såhär:
for(initialization; statement; increment);

Länken jag skickade är enligt mig den mest kortfattade och instruktiva sidan om c++-grunder. För en programmerare skulle jag anse totala längden på tutorialen som något man läser till frukost. Klarar du inte av att tillgodogöra dig materialet där så kommer du ha gigantiska problem med din programmering i framtiden.
Om det nu inte är så att du enbart är intresserad att ha en körbar kod utan förståelse, om så är fallet så är jag inte intresserad av att hjälpa dig.

Citat:

Ursprungligen inskrivet av fammo
Såhär ser det ut då:
http://pici.se/541549/

Tänk på att använda rätt "inskjut"/"tabbar".
På samma sätt som int main(){ skapar ett "scope" så gör for((...)) det med, därför bör dina tabbar vara organiserade något såhär:

´//exempel.cpp #include <iostream> int main(){ int x = 0; //Första scopet i main, en "tabb" for(int i = 0; i<10; i++) //Påbörjar nytt scope, fortfarande i main()s scope { //Tillhör for-loopen, ingen tabb än x = i; //Andra "tabben", du är i ett nytt scope std::cout << x; //Fortfarande i for()s scope } //Avsluta for-scopet, '}' hamnar i main-tabben std::cout << x; //i main()s scope igen if(x){ //if har nytt scope, indent på raden under while(x!=0){ //Påbörja ännu ett scope x--; //I programmets tredje scope, tre tabbar if(x == 6) //Påbörja nytt scope std::cout << x; //Fjärde scopet, 4 tabbar } //Avsluta while-scopet, //if(x==6) avslutas automatiskt då det enbart har en rad och inte behöver '{' och '}' } //Avsluta if-scopet, taggarna för if(x) behövs egentligen inte if(x) enbart har "en rad", alltså while. //Går även att göra såhär, utan '{' och '}', men brukar ha lite taggar för tydlighetens skull. if(x) if(x) if(x) std::cout << x; }

Koden ser lite kluttrig med alla kommentarer, men att använda inskjut/"tappar" vid varje nytt scope hjälper folk att läsa koden.

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem

devC++ vill jag slå ett slag för med, den rekommenderade vår kursansvarige oss stackars windowsnötter när vi läste Programmeringen på högskolan.

dessutom, kurslitteatur är din vän. Skansholms c++ var grym för exempel minns jag. lite tråkig, men grymt bra exempel.

.... och i programmets upplägg... det kanske är lite överkurs såhär dax, men fan vad guld c++ går när man nyttjar sig av funktioner. särskilt om du vill ha en meny allt utgår ifrån.... funktionsbygg skiten, varje menyval som en egen funktion med ett vilkor som uppfylls för att återgå till menyn typ.

Permalänk
Medlem

Hur kommer det sig att alla tutorials med loop i sig visar bara att man kan få fram flera st grej. Typ mitt namn Richard kan räknas upp 100ggr om jag så vill.
Men att flytta tecken så det skrivs ut baklänges är ju omöjligt nästan.
Det är som att loop inte alls passar in tycker jag :S

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem

Precis, dom visar hur man kan skriva ut sitt namn flera gånger, alltså nästan samma som att hoppa ett steg i taget genom sitt namn, bokstav för bokstav...

Om du vet längden på ditt namn så kan du konstruera en loop som växlar tecken från första plats till sista plats, näst första till näst sista... tills man nått mitten. Sedan har du ditt slutresultat.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fammo
Hur kommer det sig att alla tutorials med loop i sig visar bara att man kan få fram flera st grej. Typ mitt namn Richard kan räknas upp 100ggr om jag så vill.
Men att flytta tecken så det skrivs ut baklänges är ju omöjligt nästan.
Det är som att loop inte alls passar in tycker jag :S

Har du gjort det jag skrev att du borde göra? För då borde det vara ganska uppenbart vad det är som krävs.

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fammo
Hur kommer det sig att alla tutorials med loop i sig visar bara att man kan få fram flera st grej. Typ mitt namn Richard kan räknas upp 100ggr om jag så vill.
Men att flytta tecken så det skrivs ut baklänges är ju omöjligt nästan.
Det är som att loop inte alls passar in tycker jag :S

Det är skrämmande hur du lyckas ducka alla tips på att lära dig från grunden (länkar har skickats) och istället vill ha kod serverat på ett silverfat. Om det nu är din attityd till programmering förstår jag inte varför du slösar bort din (och våran) tid på det.

Permalänk
Medlem

Aa men c++ språken är ju väldigt, väldigt speciellt.
Det är ju inte det enklaste att förstå sig på som nybörjare.
Fast visst kan man bli irriterad på folk som vill ha hjälp.
Men man behöver inte heller smutskasta varann, eller?
Ibland undrar man om folk alls tänker efter när de skriver.
Jag vill bara ha hjälp att förstå mig på c++.
Jag skriver allt själv. Förutom loopen som jag har problem med.
Men kan jag inte den så är jag en idiot?

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem

Vet du hur array-indexering fungerar?

en array skrivs som

datatyp namn[längd];

Längd måste vad en konstant, typ 20 i ditt program.
För att sedan få ut ett värde, eller sätta ett värde skriver du

namn[2] = 12; cout << namn[2];

det går även bra att accessa med hjälp av en variabel

int i; cin >> i; cout << namn[i];

Detta tillsammans med en for-loop bör räcka för att lösa ditt problem

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

En annan kod för att få te.x ett namn baklänges som är ganska lätt att följa, ett tips är att även kommentera i koden så du inte fortsätter på ett program 2 veckor senare och inte vet vad koden betyder

#include "stdlib.h"
#include "sstream"
#include "iostream"
#include "string"
using namespace std;

void B(){
string mening;
cout << "Write a sentence: ";
getline(cin,mening);
reverse(mening.begin(), mening.end()); //skriver om meningen baklänges
cout << "The sentence backwords: " << mening << "\n";
}

int main() {
B();
return 0;
}

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fammo
Aa men c++ språken är ju väldigt, väldigt speciellt.
Det är ju inte det enklaste att förstå sig på som nybörjare.
Fast visst kan man bli irriterad på folk som vill ha hjälp.
Men man behöver inte heller smutskasta varann, eller?
Ibland undrar man om folk alls tänker efter när de skriver.
Jag vill bara ha hjälp att förstå mig på c++.
Jag skriver allt själv. Förutom loopen som jag har problem med.
Men kan jag inte den så är jag en idiot?

Det första man ska göra när man ska lära sig programmera är att lära sig att söka och förstå information. Majoriteten av informationen är i språket engelska och därför bör man även ha baskunskaper+ inom språket.
Jag anser det bara de fundeamentala baskunskaperna inför programmerandet och det kommer att användas dagligen från dag 1 till den dag du kolar.

Och en möjlig anledningen till att du inte förstår hur en for-loop kan användas till annat än att skriva ut ditt namn 100ggr är för att du inte har greppat hur en for-loop fungerar, eller kanske tom hur en array fungerar och accessas.
Då är det just DET du ska lära dig och då kommer du komma på hur den kommer kunna användas till annat.

Du äör förmodligen ingen idiot (definationen på idiot är aningen godtycklig) men du är väldigt grön inom programmeringsområdet. Och om du inte vill ta dig till de råden om att läsa (läsa tills du förstår) de länkar (som går igenom språket väldigt basic) utan frågar oss vid varje steg du inte klarar av så är det klart att man reagerar.

Du lär dig inte mer än att göra just precis din uppgift om du sakfrågar som du gör medans om du lär dig baskunskaperna kommer du kunna tackla problemet på ditt sätt och sen under tiden du lär dig mer och mer kommer du kunna lösa samma problem elegantare och elegantare.

Permalänk
Medlem

Detdär ger ju inte särskillt mycket dock att öva med.

Nu har ju åter igen fått alla delar, jdv skrev nyss hur du hämtade ut enskillda tecken ur en sträng/char array. Du har fått hjälp med hur du loopar.

Tänkt dig att du gör det manuellt, du börjar med sista bokstaven och skriver den först på en ny rad på ett papper, sedan tar du nästsista skriver efter den.

Samma sak ska du göra med forloopen.

Visa signatur

Laptop - MacBook 2.0GHz, 4GB ram, Intel GMA 950
Stationär - i5 3570k @ 4ghz, 8gb ram, 120gb ssd + 2tb hdd, Windows 8 64bit, fractal design arc
Citera så jag hittar tillbaka :)

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av iXam
Det första man ska göra när man ska lära sig programmera är att lära sig att söka och förstå information. Majoriteten av informationen är i språket engelska och därför bör man även ha baskunskaper+ inom språket.
Jag anser det bara de fundeamentala baskunskaperna inför programmerandet och det kommer att användas dagligen från dag 1 till den dag du kolar.

Och en möjlig anledningen till att du inte förstår hur en for-loop kan användas till annat än att skriva ut ditt namn 100ggr är för att du inte har greppat hur en for-loop fungerar, eller kanske tom hur en array fungerar och accessas.
Då är det just DET du ska lära dig och då kommer du komma på hur den kommer kunna användas till annat.

Du äör förmodligen ingen idiot (definationen på idiot är aningen godtycklig) men du är väldigt grön inom programmeringsområdet. Och om du inte vill ta dig till de råden om att läsa (läsa tills du förstår) de länkar (som går igenom språket väldigt basic) utan frågar oss vid varje steg du inte klarar av så är det klart att man reagerar.

Du lär dig inte mer än att göra just precis din uppgift om du sakfrågar som du gör medans om du lär dig baskunskaperna kommer du kunna tackla problemet på ditt sätt och sen under tiden du lär dig mer och mer kommer du kunna lösa samma problem elegantare och elegantare.

Nä visst det är jag medveten om. Är väldigt grön om man säger så.
Men jag får väl läsa om och om igen hur jag ska göra så det fastnar i skallen om man säger så.
Det räcker inte att läsa en gång, inte för mig iaf huhu.
Aja det löser sig nog får jag hoppas på

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::