Kezdőoldal » Számítástechnika » Programozás » Miért nem olvassa be a számot...

Miért nem olvassa be a számot sscanf-el a következő esetben?

Figyelt kérdés

Kezdő programozó vagyok.


Stack *s;

int i, n, a;

char *muvelet;

FILE* f = fopen("bemenet.txt", "rt");

allomany_ellenorzes(f);

s = create(n);

fscanf(f, "%i", &n);

muvelet = (char*)malloc(n*sizeof(int));

dinamikus_ellenorzes(muvelet);

fscanf(f, "%s", muvelet);

for(i=0; i<strlen(muvelet); ++i)

{

sscanf(muvelet,"%i",&a);

printf("%i\n", a);

}


A műveletet beolvassa állományból, ez lenne az: (((1+2)*3)-(5/(1.0+4)))

Mégsem sikerül sscanf-el beolvassa a számokat, kiír egy csomó 2686868-at, 1-es vagy 2-es helyett. Mi a hiba?



2017. márc. 25. 15:27
 1/3 anonim ***** válasza:

Jó lenne tudni, hogy:

allomany_ellenorzes(f); ez és dinamikus_ellenorzes(muvelet); ez mi a fenét csinál.

Azon kívül kellene a file PONTOS tartalma és az, hogy milyen kimenetet kapsz.


Ja,(int i, n, a; ) deklarálj még egy p változót is elé XD

2017. márc. 25. 16:56
Hasznos számodra ez a válasz?
 2/3 maketz válasza:

Kezdo programozo.

lehet ennel van jobb levezetes de en igy csinaltam meg,a kollegad vagyok.

Amugy lehetne else aggal is es akkor minden mast venne a szamokon kivul.

#include <stdio.h>

#include <stdlib.h>

#include "stack.h"

#include <string.h>



int main()

{

Stack *s;

char t[]="(((1+2)/(2*1))-(1+1.523))";

char d[]="+-*/(";

int n=strlen(t),i;

s=create(n);

double a,b, muv;

for (i=0; i<n; ++i){

if(t[i]==')'){

b=pop(s);

muv=pop(s);

a=pop(s);

while(top(s)==(double)'('){

pop(s);

}

switch((int)muv){

case (int)'+' : push(s,a+b); break;

case (int)'-':push(s,a-b); break;

case (int)'/':push(s,a/b); break;

case (int)'*':push(s,a*b); break;

}


}

if(t[i]>='0' && t[i]<='9'){ // t[i] egy szam

sscanf(t+i, "%lf", &a);

push(s,a);

while((t[i+1]>='0' && t[i+1]<='9') || (t[i+1]=='.')){ //ha szamot talal vagy pontot lep egyett az i-vel !!!

++i;

}

}


if(strchr(d,t[i])!=NULL){ // t[i] = */+-(

push(s,t[i]);

}

}

printf("eredmeny: %.4f\n",top(s));

destroy(s);

return 0;

}

2017. márc. 26. 07:41
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:
Ja, hogy egy egy infix formula kiértékelő akarna lenni?
2017. márc. 26. 08:36
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!