Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  56 3205
Hei jeg lurer på hva jeg skal skrive for og få det til slik i c++ at når jeg trykker y så går den videre og n så stenger den... og nei, while går ikke siden det blir bare en loop skal ha valg. Har er faring innen php og der er det slik at foreksempel hvis man trykker n så blir den koblet til et valg som hører n til og det samme med y... Er det noe lignende i c++ har akuratt begynt og lære meg det...
Du er ute etter if.
http://cplus.about.com/od/beginnerct.../aa022402a.htm den funker kanskje, var første treff på google
webster's Avatar
Trådstarter
Takk skal prøve... Tenker jeg legger ut en kopi av den når jeg er ferdig dette er mitt første prosjekt.
webster's Avatar
Trådstarter
det funka ikke. Alt ble bare vrengt på hode men det var det jeg lette etter,
Får vi ikke se hvordan du har forsøkt så langt?
Skrev kjapt en liten kode til deg
Den skal funke, har selv testa den ut.

Kode

#include <iostream.h>
#include <conio.h>
using namespace std;
int main()
{
char Svar;

cout << "Vil du gaa videre? Skriv 'j' for ja, eller 'n' for nei." << endl;
cin >> Svar;

if (Svar == 'j')
{
/* Imellom "{" og "}" skal du skrive hva programmet skal gjøre hvis du svarer "j", altså ja.*/
cout << "Du gikk videre!";
}
else if (Svar == 'n')
{
/* Imellom "{" og "}" skal du skrive hva programmet skal gjøre hvis du svarer "n", altså nei.*/
cout << "Du takket nei!";
}
getch();
return 0;
}
Det som står mellom "/*" og "*/" er kommentarer.
Grunnen til at man skriver de tegnene er så det ikke skal påvirke programmet.

-v0mit!
webster's Avatar
Trådstarter
Jodda det skal dere; haded bare dårlig tid: det jeg tenkte etter på var satte bare på en while men da kom det bare error og det skjønner jeg ikke hvorfor her er et lite utdrag:

char cKey;
while (cKey!= 'y')
{
cout << "Is that all right for you? (y/n)";
cin >> cKey;
}

Dette er feil meldingen jeg får:
warning C4700: uninitialized local variable 'cKey' used

Vet noen grunnen og isåfall hvordan bli kvitt den?


skal legge ut programmet når jeg er ferdig
Sist endret av webster; 10. mai 2006 kl. 20:00.
m0b
m0b's Avatar
DonorAdministrator

Kode

char cKey =  null;
Fikser muligens problemet?
webster's Avatar
Trådstarter
Sitat av |d13m0b

Kode

char cKey =  null;
Fikser muligens problemet?
Vis hele sitatet...
Hum, nei desverre:

error C2065: 'null' : undeclared identifier
Sitat av webster
Dette er feil meldingen jeg får:
warning C4700: uninitialized local variable 'cKey' used

Vet noen grunnen og isåfall hvordan bli kvitt den?
Vis hele sitatet...
Det er kun en warning så det skal gå fint å kjøre programmet.
webster's Avatar
Trådstarter
Sitat av voldern
Det er kun en warning så det skal gå fint å kjøre programmet.
Vis hele sitatet...
Klar over ta det er en warning men når jeg prøver og kjøre progremmet på andre maskiner så vill det ikke starte starter kun på min maskin.
m0b
m0b's Avatar
DonorAdministrator
webster: NULL, med store bokstaver da? Eller sett rett og slett bare en verdi til variabelen.
webster's Avatar
Trådstarter
Sitat av |d13m0b
webster: NULL, med store bokstaver da? Eller sett rett og slett bare en verdi til variabelen.
Vis hele sitatet...
Niks funket ikke det heller er er en av errorene:
error C2065: 'null' : undeclared identifier

Hva kan være galt

Kode

char cKey;
while (1)
{
cout << "Is that all right for you? (y/n)";
cin >> cKey;
if(cKey == 'n') break;
}

Kode

char cKey;
do
{
cout << "Is that all right for you? (y/n)";
cin >> cKey;
} while (cKey!= 'n');
Her er et eksempel jeg lagde forrige gang jeg leste denne tråden, men som jeg ikke gad å poste siden jeg trodde du allerede hadde funnet en løsning på problemet:

Kode

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char **argv)
{
	for(;;)
	{
		cout << "Vil du fortsette (Y/N): " << endl;

		string str;
		cin >> str;
		if(str == "N" || str == "n")
		{
			break;
		}
		if(str != "Y" && str != "y")
		{
			cout << "Ugyldig valg" << endl << endl;
			continue;
		}
	}

	return(0);
}
Sitat av voldern
Det er kun en warning så det skal gå fint å kjøre programmet.
Vis hele sitatet...
å ignorere en sånn warning kommer nesten garantert tilbake seinere og slår deg i trynet. udefinerte variabler gir for kode som oppfører seg forskjellig med forskjellig kompilator-instillinger, forskjellig caller-kode og annet skit. eliminer dem med en gang. det er generelt sett et godt tips å altid holde koden din warning-fri selv om det er snakk om fille-warnings, rett og slett fordi mange fille-warnings gjør det vanskeligere å oppdage kritiske warnings.
Sitat vitseside:

The boy is smoking and leaving smoke rings into the air.
The girl gets irritated with the smoke and says to her lover: "Can't you see the warning written on the cigarettes packet, smoking is injurious to health!"

The boy replies back: "Darling, I am a programmer. We don't worry about warnings, we only worry about errors."

Jeg pleier ikke å bry meg om advarsler hvis programmet bare skal kjøres lokalt og det ser bra ut. Koden blir kanskje mindre robust, men det virker ganske bra. Når det er sagt, vil jeg anbefale retting av advarsler, kompilering med -Wall (gir masse advarsler hvis du bruker gcc) og strukturert kode. Det er greit å lære seg det med en gang, og du vil få bruk for det hvis du lager kode som andre skal lese/bruke, eller hvis du lager store programmer. Dessuten er det ikke så vanskelig å endre til char cKey='n';
webster's Avatar
Trådstarter
Sitat av mr_eff

Kode

char cKey;
while (1)
{
cout << "Is that all right for you? (y/n)";
cin >> cKey;
if(cKey == 'n') break;
}

Kode

char cKey;
do
{
cout << "Is that all right for you? (y/n)";
cin >> cKey;
} while (cKey!= 'n');
Her er et eksempel jeg lagde forrige gang jeg leste denne tråden, men som jeg ikke gad å poste siden jeg trodde du allerede hadde funnet en løsning på problemet:

Kode

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char **argv)
{
	for(;;)
	{
		cout << "Vil du fortsette (Y/N): " << endl;

		string str;
		cin >> str;
		if(str == "N" || str == "n")
		{
			break;
		}
		if(str != "Y" && str != "y")
		{
			cout << "Ugyldig valg" << endl << endl;
			continue;
		}
	}

	return(0);
}
Vis hele sitatet...


Tusen takk mr_eff coden med if comand fungerte perfekt
Det var den jeg var ute etter men fikk den ikke til TUSEN TAKK
Sist endret av webster; 15. mai 2006 kl. 09:02.
webster's Avatar
Trådstarter
men nå har jeg et annet spørsmål... Jeg har lyst til og lage et nytt program som sender mail fra det programmet via telnet for eksempel lar det seg gjøre?
Trigonoceps occipita
vidarlo's Avatar
Donor
sock() heiter funksjonen for å snakke med nettverk. Men igjen: API!! Det finst api for å sende e-post og det er _SÅ_ mykje meir elegant enn å skrive hjulet på nytt...

Viktigaste egenskapane for ein programmerer er latskap og hovmod.
Latskap nettopp for å gjere unødvendige ting og automatisere mest mogeleg, hovmod for å tru på at det ein gjer er bra.
webster's Avatar
Trådstarter
Kan du forklare dette litt dypere?
Trigonoceps occipita
vidarlo's Avatar
Donor
*sukk* nei. Har aldri brukt wintendo, men for unix har en t.d libsmtp til sending av epost. Finst garantert liknande for wintendo.
webster's Avatar
Trådstarter
Hum, jeg bruker Windows for og lage programmet og Microsoft Visual Studio 2005 for og kode det, men jeg er ikke helt sikker på om jeg skjønner hva du mener. Det jeg er ute etter en en måte og sende mail på fra et sjema som blir fylt ut og der etter og sende det videre til en mail adresse som er oppgitt fra før. Nesten som i php kan man si bare at der er det form som blir fylt ut og man har et skjema som den linker til og sjekker den opp senere for deretter og sende mailen. Er det noen som kan hjelpe meg her med det i c++??
Sist endret av webster; 15. mai 2006 kl. 21:09. Grunn: skrive feil
Trigonoceps occipita
vidarlo's Avatar
Donor
Det eg meiner er at du bruker Outlook express, eudora, whatever sitt bibliotek for å sende e-post. Finn deg et som passer. Kas veit eg ikkje, men det finst _GARANTERT_.
Neiheihei!
TheGEEK's Avatar
Anbefaler et lite søk med google for å finne lib's til det man trenger, vær obs på at du må følge den medfølgende lisensen.. Til privat bruk er dette kanskje ikke så farlig da
google: "small c++ smtp library"
webster's Avatar
Trådstarter
Ok når jeg har funnet libraryen hva skal jeg gjøre med den da ``?? Hvordan setter jeg det hele opp? Beklager hvis spørsmålene mine plager dere :P
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av webster
Ok når jeg har funnet libraryen hva skal jeg gjøre med den da ``?? Hvordan setter jeg det hele opp? Beklager hvis spørsmålene mine plager dere :P
Vis hele sitatet...
I henhold til manualen! Det er faktisk ikkje eit eintydig svar, enkelte skal kanskje kompilerast statisk inn, andre skal kanskje linkast. Finn noko som passar, LES kva som står om det! Når du har gjort dette så kjem du tilbake med det du kanskje ikkje har forstått. Men les først, spør i andre rekke! ALLTID!
m0b
m0b's Avatar
DonorAdministrator
Men... Hvorfor i alle dager ikke bare bruke winsock til å koble opp til SMTP? Jeg mener, det er jo pokker ikke noen heksekunst å automatisere det som trengs for å sende en mail.

http://www.yuki-onna.co.uk/email/smtp.html
webster's Avatar
Trådstarter
Sitat av |d13m0b
Men... Hvorfor i alle dager ikke bare bruke winsock til å koble opp til SMTP? Jeg mener, det er jo pokker ikke noen heksekunst å automatisere det som trengs for å sende en mail.

http://www.yuki-onna.co.uk/email/smtp.html
Vis hele sitatet...

Nei men skal jeg bare skrive inn CMD comandoene i system(); slik at den kobler seg opp på telnet på den måten? Eller???
m0b
m0b's Avatar
DonorAdministrator
Nei. Les posten min. Du kan bruke WINSOCK, ikke system.
webster's Avatar
Trådstarter
jaha, får vell lese litt da , men jeg skal altså sende det fra en commando linje hvis det er noen som ikke har fått det med seg. Men noen gode eksempler setter jeg pris på.
Sist endret av webster; 16. mai 2006 kl. 11:12.
Trigonoceps occipita
vidarlo's Avatar
Donor
Kvifor sende fra kommandolinje? Og kva har det med c å gjere...? Leave me floating in high air...
webster's Avatar
Trådstarter
Sitat av slashdot
Kvifor sende fra kommandolinje? Og kva har det med c å gjere...? Leave me floating in high air...
Vis hele sitatet...
Ikke slik, skriver et program slik at du fyller inn subjeckt og navn i cmd selve programmet åpnes der, nesten som et program som var oppe her for en stund siden i forumet om net send. Der lagde en person et program som man bare fylte ut og trykka enter så ble det sendt... Skjønner?
Trigonoceps occipita
vidarlo's Avatar
Donor
Ja, og ideen din er dårlig. Skal du sende epost, bruk smtp-bibliotek eller winsock.
webster's Avatar
Trådstarter
Sitat av slashdot
Ja, og ideen din er dårlig. Skal du sende epost, bruk smtp-bibliotek eller winsock.
Vis hele sitatet...
'
Greit den er sikkert dårlig, men jeg har lyst til og gjennomføre den...
Er det noen som har en tutorial på det eller som har en til et smtp-libray eller WINSOCK?
webster's Avatar
Trådstarter
Kanskje jeg skal si det enklere, jeg vill sende mail fa et c++ program som opperer i cmd... Funker det? Kankskje det er en dum ide, men jeg vill gjennomføre den noen med ider?
m0b
m0b's Avatar
DonorAdministrator
Ja. Det lar seg gjennomføre. Har du sett på den linken jeg ga deg? Er du i det hele tatt i stand til å sende en tradisjonell mail igjennom SMTP over telnet? Hvis ikke så foreslår jeg at du lærer deg det først. Deretter så kan du lage det et lite program som tar i mot argumenter som mottaker, subject, data og så videre, for så å koble seg opp til en SMTP-server via. winsock (eller bibliotek, whatever floats your boat), og sender inn kommandoer (jf.r RFC-821) til serveren for å sende mail.
webster's Avatar
Trådstarter
Sitat av |d13m0b
Ja. Det lar seg gjennomføre. Har du sett på den linken jeg ga deg? Er du i det hele tatt i stand til å sende en tradisjonell mail igjennom SMTP over telnet? Hvis ikke så foreslår jeg at du lærer deg det først. Deretter så kan du lage det et lite program som tar i mot argumenter som mottaker, subject, data og så videre, for så å koble seg opp til en SMTP-server via. winsock (eller bibliotek, whatever floats your boat), og sender inn kommandoer (jf.r RFC-821) til serveren for å sende mail.
Vis hele sitatet...
Og sende mail via telnet har jeg gjort så lenge jeg kan huske. Men hvis dere bare kunne slutte og gå rundt grøten og heller komme med noen eksempler ville det vært større hjelp. Det fins ting man kan lese seg til og andre ting man må oppleve for andre er det kanskje lettere og lære seg ting med og oppleve det og gjøre det i praktisk enn og måtte sitte og lese seg til det for så til slutt og oppdage at man ikke husker det granne av hva man har gjort for man vet ikke nok om hvordan det fungerer i prakrisk
m0b
m0b's Avatar
DonorAdministrator
Ok, da kan jeg sikkert skrive deg et lynkjapt eksempel når jeg kommer hjem fra jobb.
webster's Avatar
Trådstarter
Sitat av |d13m0b
Ok, da kan jeg sikkert skrive deg et lynkjapt eksempel når jeg kommer hjem fra jobb.
Vis hele sitatet...

Tusen Hjertlig Takk
m0b
m0b's Avatar
DonorAdministrator
Nå er det sikkert en del av de hardcore programmerene som vil gi noe kritikk på koden, men det får så være. Dette er og blir sloppy-10-minutes-proof-of-concept-code.


Du får selv justere slik at du får sendt med argumentene der du trenger de, og sette de følgenge inn i strenger.

Jeg skriver med php-tag her nå fordi indenting ikke ser til å funke skikkelig med code-tag.
(En plass der du kan lese koden skikkelig er på http://www.rafb.net/paste/results/rD6bmC36.html)

Kode

#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>

#pragma comment( lib, "wsock32.lib" );

// argc er antall argumenter slengt med programmet når det starter, argv[index] er selvfølgelig argumentet.
int main( int argc, char *argv[] )
{
	WSADATA sData;
	SOCKET Client;

	if( WSAStartup( 0x0202, &sData ) )
		return false;

	if( INVALID_SOCKET != (Client=socket( AF_INET, SOCK_STREAM, IPPROTO_TCP)) )
	{
		LPHOSTENT Host = gethostbyname( "mail.online.no" );
		SOCKADDR_IN ServerInfo;
		ServerInfo.sin_family = AF_INET;
		ServerInfo.sin_port	= htons( 25 );
		ServerInfo.sin_addr	= *((LPIN_ADDR)*Host->h_addr_list );

		if( SOCKET_ERROR != connect(Client, (LPSOCKADDR)&ServerInfo, sizeof(ServerInfo)) )
		{	
			char Data[512];
			strcpy( Data, "HELO online.no\r\n"  );
			strcat( Data, "MAIL FROM:<root@fbi.gov>\r\n" );
			strcat( Data, "RCPT TO:<din@epost.no>\r\n" );
			strcat( Data, "DATA\r\n" );
			strcat( Data, "Subject:E-postens tittel\r\n\r\n" ); // To ganger (RFC 882)

			strcat( Data, "Dette er da epostens innhold...\r\n" );
			strcat( Data, "\r\n.\r\n" );
			strcat( Data, "QUIT \r\n" );
			
			if( -1 == send(Client, Data, sizeof(Data), 0) )
				printf( "Error sending mail" );
		}
		else
			printf( "connect error\n" );
	}
	else
		printf( "Socket error\n" );
	
	WSACleanup();
	
	return 0;
}
Sist endret av m0b; 16. mai 2006 kl. 23:12.
webster's Avatar
Trådstarter
Tusen Hjertlig Takk for koden det var akuratt det jeg trengte
Og jeg beklager hvis jeg har vært til stor bry
webster's Avatar
Trådstarter
Hei so sakt skulle jeg legge ut programmet når det var ferdig...
Jeg legger det ut men det er ikke ferdig, det jeg håper på her
er og få noen tips om forbedringer osv... Og så vill jeg klare og
få mail funkjsonen til og funke. Der den kommer inn i bilde er at
den skal sende en mail til brukeren om at det var bare tull og at ingen ting er skjedd alt
var helt ufarlig. Hjelp og kommen tarer er velkommen.

Den kan lastes ned her: her
Trigonoceps occipita
vidarlo's Avatar
Donor
Uhm, et kompilert program er verdilaust. Hiv ut kilde også.
webster's Avatar
Trådstarter
Sitat av slashdot
Uhm, et kompilert program er verdilaust. Hiv ut kilde også.
Vis hele sitatet...
Nei, liker ikke og gi ut noe før det er ferdig... Så fort alt er fikset kan jeg sikkert det.
Men ikke før det er perfekt.

Beklager
m0b
m0b's Avatar
DonorAdministrator
Altså, du kan i praksis ha gjort hva som helst med det programmet der. Folk liker gjerne ikke å kjøre exe filer på måfå og fra totalt ukjente person. Dersom du skal ha respons foreslår jeg at du faktisk legger ut kode.

Dessuten, legger du ut selve koden og det er plasser det er dårlig. Hva er det verste som kan skje? Jo du får konstruktiv kritikk og løsninger fra folk som også kan programmere.
Sist endret av m0b; 18. mai 2006 kl. 13:32.
webster: Eh, er det du som har laget denne? Og hvorfor sender den en tvunger shutdown av windows? Virker som en fake MSN block status sjekker som egentlig er et virus/trojan/spyware/osv. Først spør den om epost-adresse og passord til denne, deretter sier den at info er sendt ut til alle dine kontakter før den sender en tvungen shutdown av Windows systemet. Utfra det du har skrevet i tråden virker det som om du prøver å samle epostadresser og passord til disse som blir sendt til din mail, men hvorfor i alle dager sende på en tvungen shutdown? Ligger ikke noe nytt i Run/RunOnce i registeret forresten

Kode

 ##############################
 #----------------------------#
 #----------------------------#
 #-------Block-Status-V.1-----#
 #----------By-Marcus---------#
 #------Thanks-To-Dindlae-----#
 #----------------------------#
 #----------------------------#
 ##############################
Sist endret av sputch; 18. mai 2006 kl. 13:49.
webster's Avatar
Trådstarter
Sitat av sputch
webster: Din dust!
Dette er jo slettes ikke noe du har laget.. Tipper dette er en fake MSN block status sjekker som egentlig er et virus/trojan/osv. Først spør den om epost-adresse og passord til denne, deretter sier den at info er sendt ut til alle dine kontakter før den sender en tvungen shutdown av Windows systemet.

Kode

 ##############################
 #----------------------------#
 #----------------------------#
 #-------Block-Status-V.1-----#
 #----------By-Marcus---------#
 #------Thanks-To-Dindlae-----#
 #----------------------------#
 #----------------------------#
 ##############################
Vis hele sitatet...

Nei vell, tro hva du vill. Det er ikke noe virus og det shutdown på slutten la jeg til forgøy ( system(shutdown -s -t -c c**)); ) Og ja du har gjettet riktig den er fake.* Og thanks er lakt til for at det var en person som satte meg i gang c++ skal også legge til thanks for |d13m0b når alt blir fikset.

* Programmet er ikke ment til og brukes hvorsomhelst, det er ment for gøy blant venner og slikt. Mail funksjonen sm forklart tidligere er ment for og sende mail til motakeren og si at alt er helt grei.

Til |d13m0b: Tusen takk for hjelpen jeg satte stor pris på den og fra min side er all kritikk god kritikk, det hjelper en på veien.
webster's Avatar
Trådstarter
Slik hvis dere går inn her
Så vill dere finne kode og program :P
Trigonoceps occipita
vidarlo's Avatar
Donor
Så du legg ut noko som tar shutdown _UTEN_ å opplyse om det... Du skaper problem for andre just for fun. Sorry, greier neppe å ta deg seriøst nokon sinne meir.

Hmm, også bruker du endl og system(cls)... Aldri hørt om escaped chars? \n for newline, \t for tab og slikt. Mykje meir elegant
webster's Avatar
Trådstarter
Sitat av slashdot
Så du legg ut noko som tar shutdown _UTEN_ å opplyse om det... Du skaper problem for andre just for fun. Sorry, greier neppe å ta deg seriøst nokon sinne meir.

Hmm, også bruker du endl og system(cls)... Aldri hørt om escaped chars? \n for newline, \t for tab og slikt. Mykje meir elegant
Vis hele sitatet...
Vet men syns det er mye lettere med cls, men for all del du er velkommen til og legge ut en opdaterings verson.
Sist endret av webster; 18. mai 2006 kl. 15:47.