|
Community
Szene & News
Locations
Impressum
|
Forum / Bits und Bytes
C++ Objekorientiert ? kennt sich jmd aus ?

TheMouSe - 37
Anfänger
(offline)
Dabei seit 05.2004
12
Beiträge
|
|
Geschrieben am: 06.06.2010 um 13:53 Uhr
|
|
Hey!
kann mir jemand helfen wie ich die blöde aufgabe lös ?
Gibt einige stellen an denen es echt hapert...wär toll wenn jemand mal das ding irgendwie beispielhaft macht mit erläuterungen..
zbsp wie kann ich etwas mit einem bestimmten wert default mäsig initialisieren und wo hau ich die time def rein?
also:
static time_t now = time(0);
static tm *nun = localtime(&now);
?
Ihrer SMS Verwaltung auf dem Handy soll eine Klasse Sms zugrunde liegen. Diese Klasse hat die
Attribute sender, text und timestamp. Der sender ist vom Typ Senderinfos, (enthält
einen Namen und eine Telefonnummer), der timestamp vom Typ DateTime besteht aus Tag,
Monat, Jahr, Stunde und Minute.
Eine SMS soll folgende Methoden ausführen können:
void showText() zur Anzeige des SMS-Inhalts auf dem Bildschirm
void showTime() zur Anzeige des Timestamps auf dem Bildschirm
void showSender() zur Anzeige des Senders auf dem Bildschirm
void inputTex(char endechar) um Text einzulesen
void updateTime(const int yearnew, const int daynew, const int
monthnew, const int hournew, const int minutenew)
um ein Änderungsdatum als neuen Timestamp zu speichern
double costs() 160 Zeichen kosten untertags (7-18 Uhr) 69 Cent, sonst 46 Cent – eine SMS
kann beliebig lang sein, die Methode gibt den Preis einer SMS zurück
Werden beim Anlegen der SMS keine Werte mitgegeben, so wird der Sender („ich“) mit eigener
Rufnummer (12345) eingetragen und als Timestamp wird werden aktuelles Datum und Uhrzeit
eingesetzt.
Ansonsten kann eine SMS auch mit allen Infos (Senderinfos, Text, Timestamp) angelegt werden.
Schreiben Sie eine Klasse SMS und die benötigten Hilfsklassen Senderinfos und DateTime.
Folgendes Hauptprogramm sollte funktionieren:
int main()
{
Sms neueSMS;
neueSMS.inputTex('*');
cout<<"Kosten: "<<neueSMS.costs()<<endl;
neueSMS.showText();
neueSMS.showTime();
Sms* geaenderteSMS=&neueSMS;
geaenderteSMS->updateTime(2006,10,5,12,0);
geaenderteSMS->showTime();
return 0;
}
Hinweise zur Zeitberechnung
In ctime.h oder time.h ist folgende Stuktur definiert, wird im devCpp automatisch eingebunden
(Zugriff wie bei Klassen mit public Attributen):
struct tm
{
int tm_sec; // Sekunden [0-59]
int tm_min; // Minuten[0-59]
int tm_hour; // Stunden [0-23]
int tm_mday; // Tag [1-31]
int tm_mon; // Monat [0-11]
int tm_year; // Jahr -1900
int tm_wday; // Wochentag [0-6]
int tm_yday; // Tag des Jahres [0-356]
int tm_isdst;// Sommerzeitverschiebung [-1/0/1]
};
Die Aktuelle Zeit in Sekunden seit dem 1.1.1970 wird durch time(0) zurückgegeben.
Umwandlung der Zeit in Sekunden in ein struct z vom Typ tm:
time_t now = time(0); //time_t entspricht einem int
tm *jetzt = localtime(& now); //Parameter vom Typ Zeiger auf time_t
Wer sagt jeder Shishatabak schmeckt gleich hat keine ahnung....
|
|
Klischeepunk - 41
Champion
(offline)
Dabei seit 01.2005
8907
Beiträge
|
Geschrieben am: 06.06.2010 um 14:44 Uhr
Zuletzt editiert am: 06.06.2010 um 14:50 Uhr
|
|
Zitat von TheMouSe: Hey!
kann mir jemand helfen wie ich die blöde aufgabe lös ?
Gibt einige stellen an denen es echt hapert...wär toll wenn jemand mal das ding irgendwie beispielhaft macht mit erläuterungen..
zbsp wie kann ich etwas mit einem bestimmten wert default mäsig initialisieren und wo hau ich die time def rein?
also:
static time_t now = time(0);
static tm *nun = localtime(&now);
?
hier hast du doch schon alles was dich interessiert.
Wenn du das in einer Klasse als Standardwert für bestimmte Attribute nutzen willst hast du nahezu unbegrenzte möglichkeiten.
Zitat:
class Senderinfo {
struct myTimeStamp{
int sec;
int min;
...
}
}
sowas ließe sich bspw. nutzen, oder du baust ne class Timestamp, oder du baust dir ne union mit getern und setern, oder du gibst der Klasse Senderinfo direkt die Attribute sekunde, minute, stunde, ...
Default werte kannst du dann im Konstruktor setzen, also in
Zitat:
Senderinfo::Senderinfo(){
this->min = tm->t_sec;
} (sorry, korrekten attributsnamen vergessen) oder so.
Oder aber du formatierst dir n hübschen String zusammen wie's wiki vormacht:
Time_t
Prinzipiell gilt wenn du einen bestimmten Wert in einer Klasse haben willst, von anfang an und keine Uninitialisierten Vars gehört das in den Konstruktor. Den kannste auch entsprechend oft überladen, das du selbst eingreifen kannst und ggf. Parameter mitgeben kannst.
Dass die Elemente der Zeitstruktur wie public zu behandeln sind bedeutet nur dass du jederzeit von jedem Ort zugreifen kannst.
Dieser Post wurde 2 mal ROT-13 verschlüsselt.
|
|
kikl - 35
Halbprofi
(offline)
Dabei seit 12.2005
123
Beiträge
|
|
Geschrieben am: 06.06.2010 um 14:47 Uhr
|
|
Zitat von TheMouSe:
zbsp wie kann ich etwas mit einem bestimmten wert default mäsig initialisieren und wo hau ich die time def rein?
also:
static time_t now = time(0);
static tm *nun = localtime(&now);
?
1. Um Werte default-maeßig zu initialisieren gibt es den Default-Konstruktor. Der Name ist identisch mit dem Klassenamen, er hat keinen Rueckgabewert und uebernimmt keine Parameter. Außerdem wird er immer dann aufgerufen, wenn ein Objekt erzeugt wird.
2. Da dir
static time_t now = time(0);
static tm *nun = localtime(&now);
die aktuelle Zeit liefert, wuerde ich das Programmstueck dort reinpacken, wo es laut Aufgabenstellung benoetigt wird.
|
|
Klischeepunk - 41
Champion
(offline)
Dabei seit 01.2005
8907
Beiträge
|
Geschrieben am: 06.06.2010 um 14:53 Uhr
Zuletzt editiert am: 06.06.2010 um 14:56 Uhr
|
|
Achja eins noch: In zukunft formatier deine verdammten Texte, das macht ja überhaupt keinen spass sich da durchzuquälen. Merke: Du suchst hilfe von Leuten die wesentlich besseres zu tun haben, da könntest du dir auch die Mühe machen das entsprechend aufzubereiten.
Und zu guter letzt noch was: Zeig was du dir selbst schon erarbeitet hast, relevante Codeabschnitte, dass wir dir sagen können "dein ansatz funktioniert du hast nur hier n ; vergessen" oder "dein ansatz ist scheiße, das kann nicht gehn, versuchs mal anders anzupacken".
Dieser Post wurde 2 mal ROT-13 verschlüsselt.
|
|
TheMouSe - 37
Anfänger
(offline)
Dabei seit 05.2004
12
Beiträge
|
|
Geschrieben am: 06.06.2010 um 14:57 Uhr
|
|
also müsste ich die beiden zeilen um das time now zu initialisieren mit in den default konstruktor reinpacken ?
weil einfach direkt in der klasse will er das nicht und spuckt fehlermeldungen aus...warum geht das denn so nicht ?
dass ich einfach sag:
time now initialisation und dann zbsp:
int monate = now->tm_mon;
?
Wer sagt jeder Shishatabak schmeckt gleich hat keine ahnung....
|
|
kikl - 35
Halbprofi
(offline)
Dabei seit 12.2005
123
Beiträge
|
|
Geschrieben am: 06.06.2010 um 15:03 Uhr
|
|
Zitat von TheMouSe: also müsste ich die beiden zeilen um das time now zu initialisieren mit in den default konstruktor reinpacken ?
weil einfach direkt in der klasse will er das nicht und spuckt fehlermeldungen aus...warum geht das denn so nicht ?
dass ich einfach sag:
time now initialisation und dann zbsp:
int monate = now->tm_mon;
?
Man kann Werte nur in Konstruktoren oder Methoden zuweisen!
|
|
TheMouSe - 37
Anfänger
(offline)
Dabei seit 05.2004
12
Beiträge
|
|
Geschrieben am: 06.06.2010 um 15:04 Uhr
|
|
also, hier mein ansatz:
#include <iostream>
#include <time.h>
using namespace std;
class Senderinfos
{
private:
string name;
int telefonnummer;
public:
void showname(string);
void showtelefonnummer(int);
void set_name(string);
void set_telefonnummer(int);
}
static time_t now = time(0);
static tm *nun = localtime(&now);
class DateTime
{
private:
int tag = nun->tm_mday;
int monat = nun->tm_mon+1;
int jahr = nun->tm_year+1900;
int stunde = nun->tm_hour;
int minute = nun->tm_min;
public:
void updateTime(const int yearnew, const int daynew, const int monthnew, const int hournew, const int minutenew);
}
class SMS
{
private:
Senderinfos sender;
DateTime timestamp;
public:
void showText()
void showTime()
void showSender()
void inputText()
void updateTime()
double costs()
}
Wer sagt jeder Shishatabak schmeckt gleich hat keine ahnung....
|
|
Klischeepunk - 41
Champion
(offline)
Dabei seit 01.2005
8907
Beiträge
|
Geschrieben am: 06.06.2010 um 15:05 Uhr
Zuletzt editiert am: 06.06.2010 um 15:12 Uhr
|
|
Zitat von TheMouSe: also müsste ich die beiden zeilen um das time now zu initialisieren mit in den default konstruktor reinpacken ?
weil einfach direkt in der klasse will er das nicht und spuckt fehlermeldungen aus...warum geht das denn so nicht ?
dass ich einfach sag:
time now initialisation und dann zbsp:
int monate = now->tm_mon;
?
Wenn du alles richtig gemacht hast sollte das einwandfrei funktionieren.
Ein int wert wird in eine int Variable kopiert.
Hier wäre jetzt dein Code interessant.
Du hast ja folgende Einschränkungen:
a) Eine Klasse kennt erstmal nur ihre eigenen Elemente.
b) In einer Klassendefinition gehört kein ausführbarer Code
c) wenn du ein Objekt einer fremden Klasse innerhalb deiner Klasse angelegt hast, kannst du auf ihre Publicmember zugreifen, um auf ihre privates zuzugreifen brauchst du entsprechende "Umwege" (fgw. int GetMonth() und void SetMonth(int) methoden bspw.) die wiederrum public deklariert wurden.
Sichbarkeit für Lokal definierte Variablen beschränkt sich auf die Funktion in der sich deklariert wurde, außerhalb hat sie keine Gültigkeit.
Sichtbarkeit für Klassenweit definierte Variablen beschränkt sich auf die eigene Klasse, außerhalb hat sie keine Gütligkeit.
Sichtbarkeit für Global definierte Variablen ist Global wenn die Definition jedem Teil deines Projektes bekannt ist.
Zitat:
static time_t now = time(0);
static tm *nun = localtime(&now);
class DateTime
{
private:
int tag = nun->tm_mday;
int monat = nun->tm_mon+1;
int jahr = nun->tm_year+1900;
int stunde = nun->tm_hour;
int minute = nun->tm_min;
public:
void updateTime(const int yearnew, const int daynew, const int monthnew, const int hournew, const int minutenew);
}
Wertzuweisungen haben in der Klassendefinition nichts verloren. Standardkonstruktor!
Zitat:
class DateTime
{
private:
int tag;
int monat;
int jahr;
int stunde;
int minute;
public:
void updateTime(const int yearnew, const int daynew, const int monthnew, const int hournew, const int minutenew);
};
DateTime::DateTime()
{
this->tag = nun->tm_mday;
this->monat = nun->tm_mon+1;
this->jahr = nun->tm_year+1900;
this->stunde = nun->tm_hour;
this->minute = nun->tm_min;
}
(sorry selbst gepennt ;)
Dieser Post wurde 2 mal ROT-13 verschlüsselt.
|
|
TheMouSe - 37
Anfänger
(offline)
Dabei seit 05.2004
12
Beiträge
|
Geschrieben am: 06.06.2010 um 21:28 Uhr
Zuletzt editiert am: 06.06.2010 um 21:32 Uhr
|
|
ahhh!!!
und dann hab ich gepennt -.- dacht du hast meinen code post nicht gesehen dabei hasts editiert und dabei bekommst keine meldung 
und wo wird dann mein time now initialisiert ?
Wer sagt jeder Shishatabak schmeckt gleich hat keine ahnung....
|
|
TheMouSe - 37
Anfänger
(offline)
Dabei seit 05.2004
12
Beiträge
|
|
Geschrieben am: 06.06.2010 um 22:08 Uhr
|
|
habs jetzt soweit aber iwie lässt der mich das trotzdem nicht machen...
#include <iostream>
#include <time.h>
using namespace std;
class Senderinfos
{
private:
string name;
int telefonnummer;
public:
void showname(string);
void showtelefonnummer(int);
void set_name(string);
void set_telefonnummer(int);
};
class DateTime
{
private:
int tag;
int monat;
int jahr;
int stunde;
int minute;
public:
void set_tag(int);
void set_monat(int);
void set_jahr(int);
void set_stunde(int);
void set_minute(int);
void updateTime(const int yearnew, const int daynew, const int monthnew, const int hournew, const int minutenew);
};
DateTime::DateTime(int tagn, int monatn, int jahrn, int stunden, int minuten)
{
//static time_t now = time(0);
//static tm *nun = localtime(&now);
set_tag(tagn);//nun->tm_mday;
/*this->monat = nun->tm_mon+1;
this->jahr = nun->tm_year+1900;
this->stunde = nun->tm_hour;
this->minute = nun->tm_min;*/
}
class SMS
{
private:
Senderinfos sender;
DateTime timestamp;
public:
void showText();
void showTime();
void showSender();
void inputText();
void updateTime();
double costs();
};
da kommen immer die meldungen:
prototype for "DateTime::DateTime(int, int, int, int, int) does not macht any in class "DateTime"
candidates are: DateTime::DateTime()
DateTime::DateTime(const DateTime&)
Wer sagt jeder Shishatabak schmeckt gleich hat keine ahnung....
|
|
Klischeepunk - 41
Champion
(offline)
Dabei seit 01.2005
8907
Beiträge
|
Geschrieben am: 06.06.2010 um 22:16 Uhr
Zuletzt editiert am: 06.06.2010 um 22:17 Uhr
|
|
Zitat von TheMouSe:
da kommen immer die meldungen:
prototype for "DateTime::DateTime(int, int, int, int, int) does not macht any in class "DateTime"
candidates are: DateTime::DateTime()
DateTime::DateTime(const DateTime&)
es wurde kein überladener Konstruktor deklariert.
(DateTime(int, int, int, int, int) )
du kannst einmal den DateTime(void) also ohne parameterliste direkt implementieren ohne ihn gesondert zu deklarieren (Standardkonstruktor) oder aber den CopyKonsturktor (DateTime(DateTime &))
lass mal den parametermist weg und freu dich dasses geht ;)
wenn du dann mit parametern initialisieren willst, gehört der jeweils überladene Konsturktor mit in die Klassendefinition.
Dieser Post wurde 2 mal ROT-13 verschlüsselt.
|
|
Klischeepunk - 41
Champion
(offline)
Dabei seit 01.2005
8907
Beiträge
|
Geschrieben am: 07.06.2010 um 07:08 Uhr
Zuletzt editiert am: 07.06.2010 um 07:17 Uhr
|
|
Achja und er wird dir "nun" um die ohren hauen, als nicht deklariert, da du deklaration und initialisierung auskommentiert hast.
Ah ich fürcht ich versteh was du zu tun versuchst. Du versuchst den "->update(...)" aus'm beispiel über den konstruktor zu lösen. Da gehört's nicht hin. DateTime kannste zwar auch ne update funktion geben, aber der konstruktor wird nur einmal bei erstellung des objekts aufgerufen.
Brech dir da keinen ab. Initialisier mit standardwerten/der aktuellen zeit und mach alles andere danach. Dann kriegste auch das bsp. lauffähig.
Zitat:
int main()
{
Sms neueSMS; // Konstruktor wird aufgerufen von Sms
/* Konstruktor von DateTime wird im Konstruktor von SMS aufgerufen */
neueSMS.inputTex('*');
cout<<"Kosten: "<<neueSMS.costs()<<endl;
neueSMS.showText();
neueSMS.showTime();
Sms* geaenderteSMS=&neueSMS;
geaenderteSMS->updateTime(2006,10,5,12,0); /*eigene Methode, nicht über Konstruktor zu lösen!!!*/
geaenderteSMS->showTime();
return 0;
}
UpdateTime gehört zur SMS klasse, wie du richtig erkannt hast, nur eben mit Parameterliste. Als bsp:
Zitat:
void Sms::updateTime(int iJahr, int iMonat, int iTag, int iStunde, int iMinute)
{
timestamp.set_Jahr(iJahr);
timestamp.set_Monat(iMonat);
....
}
Dieser Post wurde 2 mal ROT-13 verschlüsselt.
|
|
TheMouSe - 37
Anfänger
(offline)
Dabei seit 05.2004
12
Beiträge
|
|
Geschrieben am: 07.06.2010 um 13:49 Uhr
|
|
so...
hier mal mein fertiges programm:
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
class Senderinfos
{
private:
string name;
string telefonnummer;
public:
Senderinfos();
void showname();
void showtelefonnummer();
void set_name(string);
void set_telefonnummer(string);
};
Senderinfos::Senderinfos()
{
}
void Senderinfos::set_name(string Name)
{
name = Name;
}
void Senderinfos::set_telefonnummer(string nummer)
{
telefonnummer = nummer;
}
void Senderinfos::showname()
{
cout<<"Name: "<<name<<endl;
}
void Senderinfos::showtelefonnummer()
{
cout<<"Telefonnummer: "<<telefonnummer<<endl;
}
class DateTime
{
private:
int tag;
int monat;
int jahr;
int stunde;
int minute;
public:
int gethour();
DateTime();
void updateTime(const int yearnew, const int daynew, const int monthnew, const int hournew, const int minutenew);
void showTime();
};
DateTime::DateTime()
{
time_t now = time(0);
tm *nun = localtime(&now);
tag = nun->tm_mday;
monat = nun->tm_mon+1;
jahr = nun->tm_year+1900;
stunde = nun->tm_hour;
minute = nun->tm_min;
}
int DateTime::gethour()
{
return stunde;
}
void DateTime::updateTime(int year, int day, int month, int hour, int min)
{
if(month > 12 || month < 1 || day < 1 || day > 31 || hour > 24 || hour < 0 || min > 59 || min < 0)cout<<"Ungueltiges Datum! Bitte ueberpruefen!"<<endl;
tag = day;
jahr = year;
monat = month;
stunde = hour;
minute = min;
}
void DateTime::showTime()
{
cout<<setw(2)<<tag<<"."<<setw(2)<<monat<<"."<<jahr<<" ";
cout<<setw(2)<<stunde<<":";
if(minute < 10)cout<<"0";
cout<<minute<<endl;
cout<<endl;
}
class SMS
{
private:
Senderinfos sender;
DateTime timestamp;
string text;
public:
SMS();
void showTime();
void showText();
void showSender();
void inputText(char);
void inputText(string,string,char);
void inputText(string,string,char,int,int,int,int,int);
void updateTime(int,int,int,int,int);
double costs();
};
SMS::SMS()
{
Senderinfos *pointer = &sender;
pointer->set_name("ich");
pointer->set_telefonnummer("12345");
}
void SMS::updateTime(int i_jahr,int i_monat,int i_tag,int i_stunde,int i_minute)
{
DateTime *pointer = ×tamp;
pointer->updateTime(i_jahr,i_monat,i_tag,i_stunde,i_minute);
}
void SMS::showTime()
{
DateTime *pointer = ×tamp;
pointer->showTime();
}
void SMS::inputText(char endechar)
{
cout<<"Eingabe Ende --> '"<<endechar<<"' + 'Enter'"<<endl;
getline(cin,text,endechar);
}
void SMS::inputText(string absender, string telnr, char endechar)
{
cout<<"Eingabe Ende --> '"<<endechar<<"' + 'Enter'"<<endl;
getline(cin,text,endechar);
Senderinfos *pointer = &sender;
pointer->set_name(absender);
pointer->set_telefonnummer(telnr);
}
void SMS::inputText(string absender, string telnr, char endechar, int years, int months, int days, int hours, int minutes)
{
cout<<"Eingabe Ende --> '"<<endechar<<"' + 'Enter'"<<endl;
getline(cin,text,endechar);
Senderinfos *pointer = &sender;
pointer->set_name(absender);
pointer->set_telefonnummer(telnr);
DateTime *newpointer = ×tamp;
newpointer->updateTime(years,months,days,hours,minutes);
}
void SMS::showText()
{
cout<<"Text: "<<text<<endl;
}
void SMS::showSender()
{
Senderinfos *pointer = &sender;
pointer->showname();
pointer->showtelefonnummer();
}
double SMS::costs()
{
DateTime *pointer = ×tamp;
int zeit = pointer->gethour();
int laenge = text.length();
int anzahl = (laenge / 160);
if((laenge % 160) != 0)anzahl++;
if(text.length() == 0) anzahl = 1;
if(zeit >= 7 && zeit <= 18)return anzahl * 69;
if(zeit <= 7 || zeit >= 18)return anzahl * 46;
}
int main()
{
/*SMS neueSMS;
neueSMS.inputText('#');
cout<<"Kosten: "<<neueSMS.costs()<<endl;
neueSMS.showText();
neueSMS.showTime();
SMS* geaenderteSMS=&neueSMS;
geaenderteSMS->updateTime(2006,10,5,12,0);
geaenderteSMS->showTime();*/
SMS neueSMS;
neueSMS.inputText("du","1234",'*');
cout<<"Kosten: "<<neueSMS.costs()<<endl;
neueSMS.showText();
neueSMS.showTime();
neueSMS.showSender();
SMS* geaenderteSMS=&neueSMS;
geaenderteSMS->updateTime(2006,10,5,12,0);
geaenderteSMS->showTime();
SMS newSMS;
newSMS.inputText("Alex","0173456345653",'*',2020,10,4,17,0);
newSMS.showText();
newSMS.showTime();
newSMS.showSender();
cout<<"Kosten: "<<newSMS.costs()<<endl;
system("Pause");
return 0;
}
irgendwelche bugs oder verbesserungsvorschläge ?
Wer sagt jeder Shishatabak schmeckt gleich hat keine ahnung....
|
|
Klischeepunk - 41
Champion
(offline)
Dabei seit 01.2005
8907
Beiträge
|
Geschrieben am: 07.06.2010 um 13:56 Uhr
Zuletzt editiert am: 07.06.2010 um 13:58 Uhr
|
|
Zitat: SMS::SMS()
{
Senderinfos *pointer = &sender;
pointer->set_name("ich");
pointer->set_telefonnummer("12345");
}
Wenn du's schon so machst, räum deinen speicher auf.
Andererseits: unnötige Liebesmühe.
Der lokale Pointer ist unnötig wie'n kropf.
Zitat: SMS::SMS()
{
sender.set_name("ich");
sender.set_telefonnummer("12345");
}
gleiches gilt für get_Costs.
Ansonsten sieht das im schnellen Überblick gar nicht so schlecht aus.
Dieser Post wurde 2 mal ROT-13 verschlüsselt.
|
|
bredator - 41
Champion
(offline)
Dabei seit 03.2008
5319
Beiträge
|
|
Geschrieben am: 07.06.2010 um 14:22 Uhr
|
|
Mag sein, dass ich mich irre (allein, weil die C++ Syntax nach zu viel C# nicht mehr so verständlich ist), aber was passiert, wenn der Text so lange ist, dass mehr als 2 Nachrichten verschickt werden müssen? Es wird hier ja nur die Textlänge durch 160 geteilt und auf einen Rest geprüft und sodann die Anzahl um eins erhöht. Wie gesagt, ich bin etwas aus der Übung, aber hier kann doch die Variable anzahl maximal den Wert 2 annehmen, oder nicht? Das ist kein Angrätschen von der Seite, sondern eine ernstgemeinte Frage, da mich das ganze doch interessiert.
Lache nicht über jemanden, der einen Schritt zurück macht. Er könnte Anlauf nehmen.
|
|
Klischeepunk - 41
Champion
(offline)
Dabei seit 01.2005
8907
Beiträge
|
Geschrieben am: 07.06.2010 um 14:43 Uhr
Zuletzt editiert am: 07.06.2010 um 14:45 Uhr
|
|
[revidiert]
anzahlZeichen / 160 = volle SMS
anzahlZeichen %160 > 0 = +1 Teilsms
Daraus kriegen wir die korrekte Zahl oder überseh ich jetzt waS?
Dieser Post wurde 2 mal ROT-13 verschlüsselt.
|
|
Forum / Bits und Bytes
|