van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !
get2 is een character, geen string. Je kunt er wel een (char*) van maken door er 'n ampersand voor te zetten (waarschijnlijk om 'n compiler warning weg te werken) maar daardoor leest scanf niet opeens een character in in plaats van een character.Op donderdag 23 mei 2002 23:45 schreef markvt het volgende:
code:
1 2 3 4 5char get2; [..] scanf("%s",&get2);
Maak dus eerst eens "%c" van je patroon. Of 't daarna werkt weet ik niet, maar dan heb je weer een basis om verder te debuggen als dat niet het geval is.
edit:
Er zitten nog een paar erg lompe fouten in. Denk maar eens goed na over wat er gebeurd (en wat je wilt). Ik hoop dat je een debugger met step functie ter beschikking hebt.
Overigens is een naam als 'teller1' niet echt zinnig. Noem die dingen dan gewoon i, of n ofzo. Zeker als je zowel 'teller1' en 'teller' hebt is 't compleet onduidelijk welk van de twee nou de eerste is. 'getal' en 'get2' vind ik ook niet echt mooi; probeer daar eens wat zinnigere namen voor te verzinnen (needle/haystack ofzo
Bovenstaande lijkt misschien gezeur, maar geloof me, goede variabele namen helpen ontzettend bij het afleiden van de werking van code (en dus het vinden van fouten daarin).
Je hoeft trouwens helemaal geen tellers te gebruiken, maar aan iemand die zulke code schrijft, zal dat wel niet besteed zijn.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| #include <stdio.h>
#include <conio.h>
void main()
{
int teller,teller1,get2;
char getal[10], *u;
int getal2;
printf("Geef het gehele getal (met 4ren erin): ");
scanf("%s",getal);
printf("Geef een getal op waarop u wilt zoeken : ");
scanf("%d",&get2);
teller=0;
teller1=0;
for( u = &getal[0]; *u !='\0'; u++)
{
getal2 = *u;
switch(getal2)
{
case '4': /* als ik hier case 'get2' zet werkt het niet */
teller++;
break;
default:
break;
}
}
printf("%i komt %d maal voor\n",get2,teller);
} |
dit heb ik nu gefabriceerd
het werkt nu redelijk (althans als je een getal met 4ren erin gebruikt.
dit is mijn probleem:
case '4': /* als ik hier case 'get2' zet werkt het niet */
hoe los ik dit op ??
van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !
Hmm, no comment. Zet eerst maar op een rijtje wat je wil doen en welke stappen je daarvoor moet ondernemen.Op donderdag 23 mei 2002 23:59 schreef markvt het volgende:
dit is mijn probleem:
case '4': /* als ik hier case 'get2' zet werkt het niet */
hoe los ik dit op ??
En waarom moeten die tellers nu opeens wel globaal gedeclareerd worden maar die getallen niet??
Op deze manier van programmeren zul je nooit een robuust programma kunnen schrijven, dus ik denk niet dat je er mee geholpen zou zijn als ik je zou voorzeggen wat je had moeten schrijven.
Tip: gooi je huidige code weg en begin overnieuw.
de bedoeling is dat hij een getal leest zoals
123455556666 en dan de gebruiker een getal invoert zoals 5 en het programma dan uitrekend hoe vaak 5 erin staat, 4x dus in dit voorbeeldje
van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !
Verwijderd
Waarom eerst een string inlezen en dan een integer? Het is toch makkelijk om de char get2 in de string te zoeken?printf("Geef het gehele getal (met 4ren erin): ");
scanf("%s",getal);
printf("Geef een getal op waarop u wilt zoeken : ");
scanf("%d",&get2);
Dan ben je ook de conversie kwijt.
Mja, en hoe zou JIJ (als mens) dat doen? Als je een algoritme kan formuleren dat bestaat uit niet-ambigue operaties, dan kun je het ook programmeren.Op vrijdag 24 mei 2002 00:07 schreef markvt het volgende:
de bedoeling is dat hij een getal leest zoals
123455556666
en dan de gebruiker een getal invoert zoals 5 en het programma dan uitrekend hoe vaak 5 erin staat, 4x dus in dit voorbeeldje
Verder heb je geloof ik geen enkel begrip van typen of pointers (PHP programmeur misschien?). Daar zijn dan wel weer genoeg C boeken en tutorials voor. Begrip van hoe karakters, getallen en strings worden gerepresenteert is ook altijd meegenomen.
ik snap wel hoe het zit, maar dit is het laatste prakticum programma wat ik nog moet, en ik heb zoveel zitten kutten dat ik er zelf geen hout meer van snap.Op vrijdag 24 mei 2002 00:09 schreef Soultaker het volgende:
[..]
Verder heb je geloof ik geen enkel begrip van typen of pointers (PHP programmeur misschien?). Daar zijn dan wel weer genoeg C boeken en tutorials voor. Begrip van hoe karakters, getallen en strings worden gerepresenteert is ook altijd meegenomen.
van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !
Verwijderd
Dan is de enige oplossing helemaal opnieuw beginnenOp vrijdag 24 mei 2002 00:11 schreef markvt het volgende:
[..]
ik snap wel hoe het zit, maar dit is het laatste prakticum programma wat ik nog moet, en ik heb zoveel zitten kutten dat ik er zelf geen hout meer van snap.
doe ik morgenochtend wel ga er nu eerst maar eens een nachtje over slapenOp vrijdag 24 mei 2002 00:12 schreef delighteddennis het volgende:
[..]
Dan is de enige oplossing helemaal opnieuw beginnen
van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !
Dat lijkt me een tegenstelling. In ieder geval; als je het snapt, schrijf je niet zulke code.Op vrijdag 24 mei 2002 00:11 schreef markvt het volgende:
ik snap wel hoe het zit [..] ik heb zoveel zitten kutten dat ik er zelf geen hout meer van snap.
Maar succes morgen.
Verwijderd
Voer maar eens een "a" in als tweede getal. Dan zie je vanzelf het cijfer 97 verschijnen.
Trouwens ooit wel eens van "casten" gehoord?? Waarom sla je getallen op als char?? Waar staat %d eigenlijk voor bij jou??
Ik zou me maar eens iets beter verdiepen in datatypen en zeker in het opmaken van code/een programma.
Op vrijdag 24 mei 2002 00:37 schreef HammerHD het volgende:
In eerste instantie is een char een getal, een ASCII waarde, in C. Wanneer je een getal opslaat als een char krijg je dus iets heel anders, de nummers representeren namelijk een teken.
Voer maar eens een "a" in als tweede getal. Dan zie je vanzelf het cijfer 97 verschijnen.
Trouwens ooit wel eens van "casten" gehoord?? Waarom sla je getallen op als char?? Waar staat %d=double eigenlijk voor bij jou??
Ik zou me maar eens iets beter verdiepen in datatypen en zeker in het opmaken van code/een programma.
van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !
Verwijderd
Naar mijn idee is %d gelijk aan %i en gebruik je het voor int(egers). Maar pin me er niet op vast.Op vrijdag 24 mei 2002 06:49 schreef markvt het volgende:
[..]
Waarom gebruik je dan %d als je helemaal geen variabelen van het type double declareert
een komma getal druk je af met %f
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
nadat je een float hebt gedeclareerd %f=floatOp vrijdag 24 mei 2002 16:21 schreef Creepy het volgende:
%d is geen double, maar ook een integer waarde (alleen positief als ik het goed heb)
een komma getal druk je af met %f
van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !
1
2
3
4
5
6
7
| while (*pointer != '\0')
{
pointer = tedoorzoekenstring;
if (*pointer == gezochtteken)
teller++;
pointer++;
} |
of ben ik nou gek ?
ohh wacht ff char[] != string ! heeft geen \0
1
2
3
4
5
6
7
| while (pointer != &tedoorzoekenstring[10])
{
pointer = tedoorzoekenstring;
if (*pointer == gezochtteken)
teller++;
pointer++;
} |
Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad