[C] pointer en integer vergelijken?

Pagina: 1
Acties:

  • Glock
  • Registratie: November 2001
  • Niet online
hoi,
ik ben pas begonnen met C
nu was ik met en proggie bezig om binaire getallen om te zetten naar decimalen alleen krijg ik het probleem dat ie zegt dat ik pointers en integer values zit te vergelijken :(

wie kan me helpen wat ik moet veranderen of wat ik beter anders zou kunnen doen?

dit is de volledige code van het bestand:
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
36
37
38
39
#include <stdio.h>
#include <string.h>
#include <math.h>
#define MAX 32

double expo(double po);
int main(void)
{
    char bin[MAX];
    char arr[MAX];
    int i, num;
    double dec;

    printf("\nEnter a binary number (max 32):\n");
    scanf("%c", &bin);
    printf("\nCalculating...\n\n");

    for(i = 0; i < strlen(bin) ; i++)
    {
      num = strlen(bin) - i;
      arr[num] = bin[i];
    }

    for(i = 1; i < strlen(bin)+1; i++)
    {
      if(arr[i] == '1')
      {
        dec += expo(arr[i]-1);
      }
    }
    
    printf("%d\n\n", dec);
    return 0;
}

double expo(double po)
{
    double exp2(double po);
}

in dit stuk geeft hij de fout:
code:
1
2
3
4
if(arr[i] == '1')
{
    dec += expo(arr[i]-1);
}

thx al kan je me hiermee helpen

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

'1' kan gewoon 1 zijn imho

Doet iets met Cloud (MS/IBM)


  • Glock
  • Registratie: November 2001
  • Niet online
Op zaterdag 22 december 2001 16:23 schreef D2k het volgende:
'1' kan gewoon 1 zijn imho
zit wat in ja..

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

gaat sowieso niet werken, want je doet
code:
1
scanf("%c", &bin);

daar lees je maar 1 character in
Als je een string wilt inlezen moet je
code:
1
scanf ("%s", bin)

doen, maar gets () is dan misschien een betere functie...

verder is dat if(arr[i] == '1') wel goed, in tegenstelling tot wat D2k zegt, want je vergelijkt hier ascii-waarden
code:
1
dec += expo(arr[i]-1);

wat je hiermee bedoelt weet ik ook niet precies, maar ik denk dat jij wilt hebben
code:
1
dec += expo (arr[i] - '0');

(als je van een ascii-waarde de waarde '0' aftrekt, dan krijg je gewoon het getal dat je wilt hebben (0 als het '0' is en 1 als het '1' is in dit geval)
code:
1
printf("%d\n\n", dec);

dat is ook niet goed, aangezien je een double wilt afdrukken, geen integer. Als je met floats of doubles werkt moet je %f gebruiken ipv %d
code:
1
2
3
4
double expo(double po)
{
    double exp2(double po);
}

wat moet dat precies voorstellen? Bedoel je niet
code:
1
2
3
4
double expo(double po)
{
    return exp2 (po);
}

?

Maar ik vraag me nog steeds af of het na al deze wijzigingen wel gaat werken :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Glock
  • Registratie: November 2001
  • Niet online
sjow, een hoop tips :)

thx alvast, ik zal ze uitproberen want het werkte nog niet echt bepaald lekker nee :)

je hoort het nog wel :)

edit:

okeej, het zit nog niet helemaal lekker...
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
36
37
38
#include <stdio.h>
#include <string.h>
#include <math.h>
#define MAX 32
double expo(double po);
int main(void)
{
    char bin[MAX];
    char arr[MAX];
    int i, num;
    double dec;

    printf("\nEnter a binary number (max 32):\n");
    scanf("%s", bin);
    printf("\nCalculating...\n\n");

    for(i = 0; i < strlen(bin) ; i++)
    {
      num = strlen(bin) - i;
      arr[num] = bin[i];
    }

    for(i = 1; i < strlen(bin)+1; i++)
    {
      if(arr[i] == 1)
      {
        dec += expo(arr[i] - '1');
      }
    }
    
    printf("%32.0f\n\n", dec);
    return 0;
}

double expo(double po)
{
    return exp2(po);
}

is het nu...
alleen print ie een nulletje:( :p 8-)

nog een edit:

sorry, of vage grote getalle

  • [ti]
  • Registratie: Februari 2000
  • Niet online
Als je een string wilt inlezen moet je
code:
1
scanf ("%s", bin)

doen, maar gets () is dan misschien een betere functie...
urgghh :P fgets() bedoelde je natuurlijk he :)

  • Glock
  • Registratie: November 2001
  • Niet online
Op zaterdag 22 december 2001 23:13 schreef [ti] iets
ehmz, eerst maar effies werken krijge en dan optimaliseren :P

heb al ander proggie geschreve waar ik dat wel gebruik :P

maar eerst deze werken krijgen, in andere proggie verwerken en voila :P

  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

Op zaterdag 22 december 2001 17:58 schreef OiSyN het volgende:
maar gets () is dan misschien een betere functie...
Gets() is NOOIT een betere functie :+

Yo dawg, I heard you like posts so I posted below your post so you can post again.


  • Glock
  • Registratie: November 2001
  • Niet online
okeej, het is me uiteindelijk gelukt :)

http://mike.dnsalias.com/~johan/calculator.exe

comcompileerd voor jullie :P

het is een klote programma, ik weet het maar het is wel m'n eerste :P (in C)

edit: niet teveel klooie erin trouwens, nog beetje gevoelig :)
Pagina: 1