[c] conversie probleem

Pagina: 1
Acties:

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 07-09 16:29

markvt

Peppi Cola

Topicstarter
code:
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
#include <stdio.h>
#include <conio.h>
int teller,teller1/*,get2*/;
void main()
{
char getal[10];
char get2;
 
printf("Geef het gehele getal : ");
scanf("%s",getal);

printf("Geef een getal op waarop je wilt zoeken : ");
scanf("%s",&get2);
teller=0;
teller1=0;
while(teller1<=10)
{   
    if (getal[teller]==get2) 
      teller++; 
        
     teller1++;

}

printf("%i komt %d maal voor\n",get2,teller);

}

ik tracht hier een string in te lezen om te zien hoe vaak bijv 1 in 111112222 voorkomt.

iemand een oplossing voor mijn probleem ??

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


Verwijderd

kan je hier geen inttostr() gebruiken?

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21:50
Op donderdag 23 mei 2002 23:45 schreef markvt het volgende:
code:
1
2
3
4
5
char get2;

[..]

scanf("%s",&get2);
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.

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. ;) (NOFI)

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 07-09 16:29

markvt

Peppi Cola

Topicstarter
code:
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 :D

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 !


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21:50
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 ??
Hmm, no comment. Zet eerst maar op een rijtje wat je wil doen en welke stappen je daarvoor moet ondernemen.

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. 8-)

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 07-09 16:29

markvt

Peppi Cola

Topicstarter
shit ik ben moe :(

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

printf("Geef het gehele getal (met 4ren erin): ");
scanf("%s",getal);
printf("Geef een getal op waarop u wilt zoeken : ");
scanf("%d",&get2);
Waarom eerst een string inlezen en dan een integer? Het is toch makkelijk om de char get2 in de string te zoeken?

Dan ben je ook de conversie kwijt.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21:50
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
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.

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.

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 07-09 16:29

markvt

Peppi Cola

Topicstarter
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.
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. :+

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


Verwijderd

Op 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. :+
Dan is de enige oplossing helemaal opnieuw beginnen :P

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 07-09 16:29

markvt

Peppi Cola

Topicstarter
Op vrijdag 24 mei 2002 00:12 schreef delighteddennis het volgende:

[..]

Dan is de enige oplossing helemaal opnieuw beginnen :P
doe ik morgenochtend wel ga er nu eerst maar eens een nachtje over slapen ;)

:7 dank voor jullie hulp

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21:50
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. :+
Dat lijkt me een tegenstelling. In ieder geval; als je het snapt, schrijf je niet zulke code. :)

Maar succes morgen.

Verwijderd

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 eigenlijk voor bij jou??

Ik zou me maar eens iets beter verdiepen in datatypen en zeker in het opmaken van code/een programma.

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 07-09 16:29

markvt

Peppi Cola

Topicstarter
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

Op vrijdag 24 mei 2002 06:49 schreef markvt het volgende:

[..]
Naar mijn idee is %d gelijk aan %i en gebruik je het voor int(egers). Maar pin me er niet op vast.

Waarom gebruik je dan %d als je helemaal geen variabelen van het type double declareert :?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:26

Creepy

Tactical Espionage Splatterer

%d is geen double, maar ook een integer waarde (alleen positief als ik het goed heb)

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


  • markvt
  • Registratie: Maart 2001
  • Laatst online: 07-09 16:29

markvt

Peppi Cola

Topicstarter
Op 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
nadat je een float hebt gedeclareerd %f=float

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


  • xychix
  • Registratie: September 2000
  • Laatst online: 03-12-2025

xychix

FreeBSD Rules !

code:
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
code:
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

Pagina: 1