Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 3076|回复: 28
打印 上一主题 下一主题

string calculator

[复制链接]

2

主题

0

好友

17

积分

初级会员

Rank: 1

跳转到指定楼层
1#
发表于 2010-8-25 09:46 PM |只看该作者 |正序浏览
我在弄一个利用string input的calculator~程序需要加减乘除还有普通的calculator用法~我大概是知道把所有的string放进temp里面~然后丢进function来做数学~得到了先乘除的value~然后在丢回temp~继续做其他的~例如~我的input时123+456*789~我必须先把全部放进temp~然后进入function做乘除~过后做了456*789的答案~就是说把359784放进temp~temp现在应该就是123+359784~然后又再loop过~做到完整答案为止~这是我agak agak写的程序~
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
void main()
{
char x[100];
char operant[10];
char nx[100];
char temp[100];
int n, i=0, j=0;
printf("?");
gets(x);
n=strlen(x);
for(i=0;i<n;i++)
{
nx[i]=x[i];
strncpy(temp,&x[i],1);
printf("%s",temp);
}
getchar();
}
void operant()
{
do
{
while(x[i]!='+' || x[i]!='-')
{
if(x[i]=='*')
nx[i-1]*nx[i+1];
else if(x[i]=='/')
nx[i-1]/nx[i+1];
}
}
while(x[i]!='+' || x[i]!='-')
{
if(x[i]=='+')
nx[i-1]+nx[i+1];
else if(x[i]=='-')
nx[i-1]-nx[i+1];
}
我真的不知道怎样拿跟存value~更不懂该怎样写下去~这是我的assignment~希望你们可以帮帮忙~




收藏收藏0

2

主题

0

好友

17

积分

初级会员

Rank: 1

29#
发表于 2010-9-2 11:03 PM |只看该作者
回复 28# Super-Tomato


    我要昏了~~O(∩_∩)O哈哈~谢谢这么久以来的指点~我自己再慢慢参考下~


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

28#
发表于 2010-9-2 10:57 PM |只看该作者
回复  Super-Tomato


    那麻烦你先教教我用strncpy吧那(2*3)copy出来~
yangss 发表于 2010-9-2 10:08 PM



既然是文字,當然就该使用文字搜索,从字串中找到最後一個 ( 的"位置"即該字串陣列中的 index, 然後再往下找第一個遇到的 )
如此有了两個 index 數字當然就可以知道要复制多長的字串和從哪開始复制


字串 A = 字串1(字串2)字串3

字串 B = 字串1
字串 C = 字串2 去前後 ( ) 後套用目前 + - * / 的方式可得到
字串 D = 字串3

字串 A = 字串 B + 字串 C + 字串 D
繼續循环



strncpy 的例子我已經回過了,所以你就自己去研究,還有发掘我所没寫出的特性
接下去你提出問題的同时先把你所思考的逻辑或概念先寫出來, 不然這就是我在动脑做功课而不是你


回复

使用道具 举报

2

主题

0

好友

17

积分

初级会员

Rank: 1

27#
发表于 2010-9-2 10:08 PM |只看该作者
回复 26# Super-Tomato


    那麻烦你先教教我用strncpy吧那(2*3)copy出来~


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

26#
发表于 2010-9-2 08:53 PM |只看该作者
我的老师叫我用strncpy的方法,例如1+(2+3)*4-5,把(2+3)copy出来~然后做算草~得到答案了把答案丢回进去~这个 ...
yangss 发表于 2010-9-2 07:47 PM



這样是叫你拆字串和接字串,使用的陣列就没有那麽复杂麻烦,但一样需要使用循环一直判断到没有操作符号
程式中不使用 function 當然是没有問題,只要你自己思维逻辑清晰的话随你喜欢怎么用。
不過以你目前來看,幾乎所有基础都才刚開始就想把所有的東西都简化,應該有苦能讓你慢慢吃了。


回复

使用道具 举报

2

主题

0

好友

17

积分

初级会员

Rank: 1

25#
发表于 2010-9-2 07:47 PM |只看该作者
我的老师叫我用strncpy的方法,例如1+(2+3)*4-5,把(2+3)copy出来~然后做算草~得到答案了把答案丢回进去~这个方法是不是就不用用function了?


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

24#
发表于 2010-9-2 06:06 PM |只看该作者
回复  Super-Tomato


    如果用function来做,那又会是怎样?如果用一样的做法就是跟之前的加减乘除同 ...
yangss 发表于 2010-9-2 07:36 AM



你現在欠缺是思考,先去了解 function 的用法之後,再回顾你所输入的文字要怎么使用循环搜索出 ( 和 )
最後想想你一開始的逻辑和需要定义出哪些 function


回复

使用道具 举报

2

主题

0

好友

17

积分

初级会员

Rank: 1

23#
发表于 2010-9-2 07:36 AM |只看该作者
回复 22# Super-Tomato


    如果用function来做,那又会是怎样?如果用一样的做法就是跟之前的加减乘除同样道理,再加上挂号但我要怎样跟它说先做挂号里的东西?这个似乎一定要用function来做。


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

22#
发表于 2010-9-2 06:54 AM |只看该作者
已经改了我的程序~加减乘除没大碍了~现在要做parentheses solver~也就是说挂号~我应该先做挂号里面的东西~才可以继续做以外的~可是不懂怎样~我应该怎样做?指点指点~
yangss 发表于 2010-9-1 07:45 PM


其实都是同理做法, 你現在是循环先搜索 opt 中的 * / + -, 同样的方式先搜索最后一個 ( 之後再找出接下來的第一個 )
都找到了就做之間的加减乘除運算,但以你目前的编写方式来看應該會寫到很亂,所以建议你還是去掌握一下 function 的用法


回复

使用道具 举报

2

主题

0

好友

17

积分

初级会员

Rank: 1

21#
发表于 2010-9-1 07:45 PM |只看该作者
已经改了我的程序~加减乘除没大碍了~现在要做parentheses solver~也就是说挂号~我应该先做挂号里面的东西~才可以继续做以外的~可是不懂怎样~我应该怎样做?指点指点~


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-10-25 05:25 PM , Processed in 0.128190 second(s), 28 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部