07/10/28 21:34:38
>>432
#include <stdio.h>
#include <math.h>
int solve(double a, double b, double c);
double answer1;
double answer2;
int solve(double a,double b, double c)
{
double check;
check = b * b - 4 * a * c;
if(check > 0){
answer1 = (b + sqrt(b * b - 4 * a * c)) / (2 * a);
answer2 = (b - sqrt(b * b - 4 * a * c)) / (2 * a);
return 2;
}else if(check == 1){
answer1 = (b + sqrt(b * b - 4 * a * c)) / (2 * a);
answer2 = answer1;
return 1;
}
return 0;
}
main()は省略
汚いコードだけどこんな感じ
441:デフォルトの名無しさん
07/10/28 21:35:29
>>432
int solve(double a, double b, double c)
{
double d = b * b - 4 * a * c;
if(d<0) return 0;
answer1 = (-b + sqrt(d)) / 2 / a;
answer2 = (-b - sqrt(d)) / 2 / a;
return d == 0 ? 1 : 2;
}
442:デフォルトの名無しさん
07/10/28 21:36:31
>>440
それまちがってるよ
443:デフォルトの名無しさん
07/10/28 21:38:53
>>440
せっかくcheck計算してんのに、sqrtの引数に利用しないなんてムダすぎる
444:440
07/10/28 21:39:29
>>442
/(^o^)\bの前に”-”が抜けてた
>>441のほうが圧倒的に見やすくていいね
445:425
07/10/28 22:03:25
>>433
ありがとうございます!!
あと数字は数字として格納して次の問題での計算に使いたいのですが
文字列として取得した数字を別の配列に整数型の数として取得するには
どうすればいいでしょうか?
446:デフォルトの名無しさん
07/10/28 22:08:48
st=str.substr(0,n)に対して
st[i]が'0'から'9'にあればいい
コードはちょっと待ってくれ
447:デフォルトの名無しさん
07/10/28 22:08:55
>>445
std::string str = "1.234";
double d;
std::istringstream istr(str);
istr >> d;
448:デフォルトの名無しさん
07/10/28 22:30:14
stringが数値なら変換して違うならエラーを返す関数ってある?
449:デフォルトの名無しさん
07/10/28 22:33:09
atofで良いんだな
450:デフォルトの名無しさん
07/10/28 22:36:21
atofだと初めが数値だと計算してしまう
451:デフォルトの名無しさん
07/10/28 22:38:30
.8222とか、100,000とかは数値にするのか?
452:425
07/10/28 22:42:07
>>446
その方法基本情報試験の勉強でやった覚えが!!!
でもどうにも思い出せないです・・・
>>447
stringがvector<string>なためかうまくいきません。
atoiなどもvectorは拒否されてしまうみたいですね。
うーん、難しい・・・
453:デフォルトの名無しさん
07/10/28 22:44:19
#include<stdio.h>
int main(int argc, char *argv[]){
int i, index;
double value;
for(i=1;i<argc;i++){
if(sscanf(argv[i], "%lg%n", &value, &index)>=1 && argv[i][index]=='\0')
printf("%s は数値だ\n", argv[i]);
else
printf("%s は数値ではない\n", argv[i]);
}
return 0;
}
454:デフォルトの名無しさん
07/10/28 22:50:47
[1] 授業単元:データ構造とアルゴリズム1
[2] 問題文(含コード&リンク):待ち行列シミュレーションするプログラムを作成せよ
完成する関数:
void enqueue(char *x)
void dequeue()
void queue_print()
作成するプログラムについて:URLリンク(kansai2channeler.hp.infoseek.co.jp)
実行例:URLリンク(kansai2channeler.hp.infoseek.co.jp)
ヒント:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:win xp
[3.2] Microsoft Visual Studio .NET 2003
[3.3] 言語:c++
[4] 期限:2007年10月29日9:30まで
[5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで
455:デフォルトの名無しさん
07/10/28 22:56:52
>>437
符号反転キーと演算キーがかぶる気がするんだけどどうするの?
456:デフォルトの名無しさん
07/10/28 22:58:12
class mojisu {
string str;
double su;
}
mojisu x;
x.input("777");
という関数を作る 数値なら数字として保存 このとき文字は空にする 違うなら文字として保存
457: ◆nzw4qNGj6U
07/10/28 22:58:19
[1] 授業単元:プログラミング2 文字列処理
[2] 問題文(含コード&リンク):
英文(英単語)を入力し、入力した文字列を、逆から表示するプログラムを作成すること。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C
[4] 期限:2007年10月29日0:00迄
[5] その他の制限:NULL文字を使用して下さい。
よろしくお願いします。
458:デフォルトの名無しさん
07/10/28 23:41:00
>>457
NULL文字をどこで使用するんだ・・・
#include <stdio.h>
int main()
{
int i=-1;
char buf[256];
while((buf[++i]=getchar())!=EOF);
while(i>0&&putchar(buf[--i])!=EOF);
return 0;
}
459:デフォルトの名無しさん
07/10/28 23:48:49
>>458
きっとこういう風にするんだよ
#include <stdio.h>
int main()
{
int i=-1;
char buf[256];
while((buf[++i]=getchar())!=EOF);
while(i>0&&putchar(buf[--i])!=NULL); // ここ
return 0;
}
460:デフォルトの名無しさん
07/10/29 00:19:06
NUL文字?