NAVIGATIE

Freetime overzicht
Zoeken


  RUBRIEKEN

FAQ / Help
Wat mag niet?
WZL Wedstrijden
WZL Chat
WZL Toolbar
WZL Statistieken
WZL leden
WZL shop
E-cards

RSS

Fun-feed
Babe-feed
Stud-feed

Een groot aantal pokerrooms geven de mogelijkheid om poker te spelen op internet en geld te storten via het veilige iDeal betaalsysteem.
Overzicht » Computer » Programmeren » vergelijken van string/array
Onderaan pagina
Losealot
Beachboy
Sinds 24/9/2004
T: 55 R: 1358
18/3/2005 - 20:11u | Quote
Ik heb een Java-project die onderandere moet zorgen voor de visualistie van RNA door middel van gekleurde balkjes
een onderdeel hiervan is het vergelijken van rna strengen van verschillende organismen. een functie hiervan is dat het de verschillen aanduid tussen de balkjes in een ander kleur.
mijn vraag is hoe ik het simpelste die verschillen kan zien, de RNA streng is 200 tekens lang en wordt intern opgelslagen als een String met C,G,A en U.
dus ik moet strings vergelijken en de index van de verschillende tekens terug krijgen

alvast bedankt
WishMaster
[mod] 666
Sinds 26/2/2003
T:99 - R:2018
18/3/2005 - 20:28u | Quote
n00B-anwtoord (ken niks van Java) -->

For IntA = 1 to 200
codon(IntA) = left(HeleString, IntA)
Next IntA

Op die manier gaat hij alles af en steekt da in een array

*edit:
codon(IntA) is een string... (Codon1, codon2, codon3,...)
(een codon zijn 3 basen bijeen = A, T, C of G)

P.S: vraag eens aan de "Phil", da is zo ne Java-freak

Laatst aangepast door WishMaster op 18/03/2005 20:53:10u (2x aangepast)
Losealot
Beachboy
Sinds 24/9/2004
T:55 - R:1358
18/3/2005 - 20:37u | Quote
ja mr das met een for lus, kheb al eens in de API gekeken en gezocht naar een compare die een array van int terug gaf met de verschillen maar tot zover hebbek niets gevonden

btw: kheb uw code nie helemaal naar java kunnen vertalen, wat doet die cordon?

Laatst aangepast door Losealot op 18/03/2005 20:45:46u (1x aangepast)
Losealot
Beachboy
Sinds 24/9/2004
T:55 - R:1358
18/3/2005 - 20:52u | Quote
http://img55.exs.cx/img55/1416/compare8wc.jpg
Bron: © http://img55.exs.cx/img55/1416/compare8wc.jpg

je ziet op positie 150 dat de strengen verschillend zijn en dus worden aangeduid, screenshot komt uit project opgave

Laatst aangepast door Losealot op 18/03/2005 22:52:41u (1x aangepast)
Devil Hack 1.734
wzl-lid
Sinds 9/6/2004
T:1 - R:14
19/3/2005 - 9:43u | Quote
Hm, 't kan toch nie zo moeilijk zijn om da in een for-luske te steken?

boolean[] arrayVerschil = new boolean(200);


for (int i = 0; i < 200; i++)
{
if (array1 != array2)
{
arrayVerschil = true;
} else
{
arrayVerschil = false;
}
}


met array1 & array2 u arrays van integers en arrayVerschil uiteraard nen array van booleans. 'T moet zeker beter kunnen, want nu gaat uwe arrayVerschil gewoon telkens true zijn als het verschilt, ipv een lijst te zijn van posities. Da kunt ge natuurlijk oplossen door na die for lus eerst het aantal keer true te tellen dat voorkomt in arrayVerschil en vervolgens ne nieuwe array van integers aan te maken met het aantal elementen gelijk aan het aantal maal true in arrayVerschil en dan arrayVerschil afgaan zoals dees of zo:


int j = 0;
int[] arrayVerschilInt = new int(aantalTrue);

for (int i = 0; i < aantalTrue; i++)
{
if (arrayVerschil == true)
{
arrayVerschilInt[j] = i;
j++;
}
}


Natuurlijk eerst een for luske om aantalTrue te weten.

Da's maar iets waar ik zo tijdelijk aan denk. Wrsch staan er wel fouten in, maar op deze manier zal het toch ongeveer werken denk ik. Er zullen wel snellere/betere manieren zijn, maar die moogt ge zelf zoeken .
Losealot
Beachboy
Sinds 24/9/2004
T:55 - R:1358
19/3/2005 - 10:57u | Quote
mijn voorlopig gedacht:
ik zou men string van 2 keer 200 tekens omzetten in een array van chars, en dan met een for lus telkens de tekens vergelijken en de positie in een array steken, het enige probleem is dak nie weet hoelang die array zal zijn en één maken van 200 tekens om zeker te zijn lijkt me niet zo proper...

Laatst aangepast door Losealot op 19/03/2005 10:57:45u (1x aangepast)
Ben Dover 2.956
wzl-lid
Sinds 24/1/2004
T:4 - R:208
20/3/2005 - 11:31u | Quote
Losealot schreef:
mijn voorlopig gedacht:
ik zou men string van 2 keer 200 tekens omzetten in een array van chars, en dan met een for lus telkens de tekens vergelijken en de positie in een array steken, het enige probleem is dak nie weet hoelang die array zal zijn en één maken van 200 tekens om zeker te zijn lijkt me niet zo proper...


Gebruik dan een vector
Losealot
Beachboy
Sinds 24/9/2004
T:55 - R:1358
21/3/2005 - 18:16u | Quote
kheb het probleempje voorlopig opgelost met een driedubbele geneste for-lus en een boolean array
Phil 2.915
Uberhacker
Sinds 23/2/2003
T:10 - R:484
22/3/2005 - 12:50u | Quote
Ben Dover schreef:
Losealot schreef:
mijn voorlopig gedacht:
ik zou men string van 2 keer 200 tekens omzetten in een array van chars, en dan met een for lus telkens de tekens vergelijken en de positie in een array steken, het enige probleem is dak nie weet hoelang die array zal zijn en één maken van 200 tekens om zeker te zijn lijkt me niet zo proper...


Gebruik dan een vector


Hmm, ik heb zo'n licht vermoeden dat een vector heel wat trager gaat zijn dan een int[200] - moest je het nodig hebben, gebruik dan een ArrayList (stuk sneller, tenzij je mt werkt, pak dan maar een vector (synchronized)).
Losealot
Beachboy
Sinds 24/9/2004
T:55 - R:1358
22/3/2005 - 17:10u | Quote
mss dat er iemand aan uit raakt zonder de andere klassen, da moet dus korter
/**
* maakt de array die zegt welke stukjes geinverteerd moeten getekend worden
* @param lengte lengte van het getoonde rna strookje
* TODO iets aan die 3 lussen doen
*/
public boolean[] compare(int lengte){
gelijk = new boolean[lengte]; //array initialiseren
for(int i = 0; i < lengte; i++) //alle karakters van de rna string overlopen
for(int j = 0; j < (lijst.length - 1) && !gelijk; j++) //elke rna strook met elkaar vergelijken
for(int k = j + 1; k < lijst.length && !gelijk; k++)
gelijk = (lijst[j].getRnaCode().charAt(positie[j]+i) != lijst[k].getRnaCode().charAt(positie[k]+i));
return gelijk;
}
Phil 2.915
Uberhacker
Sinds 23/2/2003
T:10 - R:484
23/3/2005 - 22:39u | Quote
Ik probeer het deze nacht even na te kijken, zit nog met deadline op mn werk.

Hurray.

Btw: wrom geen meerdimensionale array ? dat zal je loop serieus inkorten

Laatst aangepast door Phil op 23/03/2005 22:41:34u (1x aangepast)
Losealot
Beachboy
Sinds 24/9/2004
T:55 - R:1358
23/3/2005 - 23:56u | Quote
kzie nie hoe ik daar een meer dimentionale array zou kunnen gebruiken, de enige tip dak van een assistent opgevangen heb is kijken wanneer ze allemaal gelijk zijn ipv verschillend

er wordt ons algemeen afgeraden om vectors te gebruiken, net zoals een switch bv

ik ga nu de database connectie schrijven, jammergenoeg een acces db gekregen

Laatst aangepast door Losealot op 23/03/2005 23:56:40u (1x aangepast)
 
Bovenaan pagina