Witam!!
Mam taki maly problemik, a mianowicie mam zliczyc sume cyfr numeru telefonu wpisywanego z klawiatury. Nie mam pojecia jak przekonwertowac zmienne "char" na "int". Acha jeszcze jedno jak wykonac petle aby obliczyla sume wszystkich wpisanych cyfr.
Z gory dzieki za sugestie.
Jeśli masz pewność, że w Edit masz tylko cyfry to oto jeden z wielu możliwych sposobów:
[code]int sum = 0;
AnsiString a = Edit1->Text;
for (int i=a.Length(); i>0; i--)
sum += a[i]&0xf;[/code]
w zmiennej sum masz sumę cyfr.
(nie daję tagów <cpp>, bo gubią się znaki i wszystko traci sens :|)
Hej!!
Musze napisac program, ktory pyta o numer telefonu, a nastepnie wyswietla komunikat: Ten telefon jest w sieci Plus/Era/Idea/Tp (zaleznie od numeru). Dodatkowo pokazuje sume cyfr (Podpowiedz: przydatne funkcje to [String.]substring oraz [String.]charAt ) a jestem kompletnie ciemny w tych sprawach.
[String.]substring oraz [String.]charAt
yy - w jakim to ma być języku?? to wygląda na JavaScript :|
poza tym - pomyśl troche, skorzystaj z pomocy - nie licz, że ktoś napisze Ci cały program (choć ten jest banalny aż boli).
Moze i jest prosty ale ja myslalem nad tym 3 dni i w tym miejscu sie zacialem. Javy ucze sie od 3 mies i .... Nie wiem jak i na co przekonwertowac zmienna char zeby mozna bylo pozniej dodac te cyfry.
To pisz od razu o jaki język chodzi - skąd mamy to wiedzieć.
No dobra... nie mam aktualnie zainstalowanego kompilatora Javy, więc będę pisał prosto z helpa - musisz to sobie dostosować.
//najpierw sprawdzenie, czy dany string jest poprawną liczbą
int sum=0;
if (!WartośćEdita.matches("^[0-9]+$")) /*error - to nie jest liczba*/;
else
{for (int i=WartośćEdita.length()-1; i>=0; i--)
sum += WartośćEdita.charAt(i);
}
ostatnia linijka powinna bez problemu działać, ale jeśli nie to spróbuj coś jak to:
sum += Integer.parseInt(WartośćEdita.charAt(i));
Wklejam caly program ktory do tej pory napisalem. Jak bys mogl cos podpowiedziec. Wszystkie pytania sa w komentarzach. Acha jeszcze jedno z jakiego helpa piszesz o ile mozna wiedziec.
import java.io.*;
public class plik{
public static void main (String [] p){
BufferedReader brIn = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Wprowadź numer telefonu:");
//do zmiennej nr_tel przypisujemy wpisany nr tel
try{String nr_tel = brIn.readLine();
System.out.println("Twoj numer telefonu to: " + nr_tel);
//Okreslamy trzy liczby po ktorych poznamy jaka to siec
String x = nr_tel.substring( 0, 3 );
//dokonuje konwersji trzech cyfr do zmiennej typu int
int prefix = Integer.parseInt(x);
System.out.println("Prefix " + prefix);
//deklaruje tablice w ktorych bedzie wyszukiwac prefix
int era[] = {601, 602, 603, 608};
int plus[] = {605, 604, 695, 652};
int idea[] = {501, 502, 506, 506};
//przeszukuje tablice i porownuje z wpisanym nr tel
for (int i =0; i<4; i++) {
if (prefix == era[i]) System.out.println("To jest numer era");
if (prefix == plus[i]) System.out.println ("To jest plus");
if (prefix == idea[i]) System.out.println("To jest idea");
else System.out.println("To jest telekomunikacja");
}
/Jak zrobic zeby jezeli to nie jest komorka wyswietlal tylko raz
komunikat ze to jest telekomunkcja/
int sum = 0;
for (int i=nr_tel.length()-1; i>=0; i--)
sum += nr_tel.charAt(i);
System.out.println(sum);
}
//liczy sume ale w kodzie ASCII czy jakims tam
catch(IOException e){System.out.println("Błąd podczas odczytu strumienia.");}
}
}
ech...
używaj tagu <cpp> do kolorowania składni - czytelniej to wygląda
dobra - w pierwszym poscie dobrze napisałem (C++) a w drugim zapomniałem o tym.
nr_tel.charAt(i); zamień na nr_tel.charAt(i) & 0xf;
jeśli to nie przejdzie, to użyj alternatywy (poprzedni post)
ale olałeś sprawdzanie czy wprowadzony tekst jest w ogóle liczbą - ja użyłem do tego wyrażenia regularnego
nr_tel.matches("^[0-9]+$")
ale jak bardzo chcesz, to możesz użyć Integer.parseInt(nr_tel)
i jak wywali exception to ciąg nie jest liczbą
z jakiego helpa? z dokumentacji Java dostępnej na stronie Sun (zassałem sobie na hdd - około 100MB)
dopisz sobie do numerów Ery 692, 694, ... (nie wiem jak inne sieci)
masz już tyle informacji, że powinieneś to sam skończyć
aby "numer tepsy" wypisało raz to w ogóle daj po każdym spełnionym "ifie" instrukcje break czyli:
```cpp
if (...) {system.out....; break;}
a nie łatwiej testować to wyrażeniami regularnymi a nie pętlą?
if (prefix.matches("6(0|9)[02468]")) System.out.println("Era");
else if (prefix.matches("88[08]")) System.out.println("Heyah");
else if (prefix.matches("6(0|9)[13579]")) System.out.println("Plus");
else if (prefix.matches("50[0-9]")) System.out.println("Idea");
else System.out.println("tp");
Dzieki za wszystkie wskazowki. Jakos dalem rade. Jeszcze male poprawki i bedzie dobrze
Pozdr