締切済み 整数型の最大、最小エラー判定 2007/05/20 13:41 初歩的な質問なのですが、キーボードから整数を入力して-32768~32767以内だったら代入し、それ以外の場合は入力を促すようにしたいのですがうまくいきません。どなたか教えてください。 みんなの回答 (4) 専門家の回答 みんなの回答 tuyo1980 ベストアンサー率0% (0/2) 2007/05/21 11:34 回答No.4 #include(stdio.h) void main(void) { int input; scanf("%d",&input) if((-32768<=input) && (input <=32768)) printf("-32768~32767以内\n") else return; } かな… 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 jacta ベストアンサー率26% (845/3158) 2007/05/20 17:40 回答No.3 C++で、かつ表現範囲が-32768~32767ピッタリの汎整数型が存在するなら、適当に文字列strに入力した後、 std::istringstream iss(str); short t; // -32768~32767ピッタリの型で宣言 iss >> t; if (!iss) goto retry; のようにすることも可能ですね。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 Oh-Orange ベストアンサー率63% (854/1345) 2007/05/20 16:38 回答No.2 ★上手く long 値に変換できたら。 ・strtol() 関数などで long 値に変換できたら範囲チェックを行います。 この範囲チェックで最も一般的な記述方法は、 if ( (value >= -32768) && (value <= 32767) ){ /* 範囲内 */ } となりますね。見た目どおりに。 ・でも次の方法でも範囲チェックが出来ます。 if ( (unsigned long)(value + 32768) < 65536UL ){ /* 範囲内 */ } ・どちらの方法でもチェックは出来ますが、下の方法は加算、比較の2ステップですので ちょっとだけ高速になります。今の時代はあまり気にしないでも良い時代ですがこんな 判定方法もありますよ。ってね。 ・その他、 0~9 までの範囲は if ( (unsigned int)value < 10 ){ … } とか、 'a'~'z'まので範囲は if ( (unsigned int)(ch - 'a') < 26 ){ … } とか といろいろを応用できます。 ・以上。範囲チェックについてでした。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 Werner ベストアンサー率53% (395/735) 2007/05/20 13:59 回答No.1 1. 適当な方法でキーボードから文字列を得る。 2. strtol関数を使って文字列をlong型に変換。 このとき、long型で表現できる値を超えていないかどうかチェックする。 http://www9.plala.or.jp/sgwr-t/lib/strtol.html 3. -32768~32767の範囲内かどうかチェックする。 4. 2や3のチェックに引っかかったら1からやり直し。 質問者 お礼 2007/05/20 14:04 Wernerさんありがとうございます。 教えていただいた方法でやってみます。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発C・C++・C# 関連するQ&A 30個の整数をキーボードから入力し、その最大、最小、和、平均を表示する 30個の整数をキーボードから入力し、その最大、最小、和、平均を表示するプログラムを教えてください。 これって簡単にできるもんなのですか? 最小整数解を代入以外の方法で知りたい (30X+24)^2-4*7169が整数の2乗となるときの0以上の最小の整数Xを求めたいのですが、 0から順に代入してみる、以外に何かいい方法はないでしょうか? 入力した整数のうち、最小のものを出力したい 一つの整数をキーボードから入力する。これをn とする。続いてn 個の整数をキーボードから入力する(値は100 以下と仮定してよい)。その後、n 個の整数の中で最小のものを出力したいのですが… 一応途中まではやってみました。↓ #include <stdio.h> int main(void) { int n, i, t; scanf("%d",&n); for (i=0; i < n; i++){ scanf("%d",&t); } return (0); } この後、どうしたらいいですか? ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム 最小の整数が,何番目に入力されたものかを出力したい 先日、 「一つの整数をキーボードから入力する。これをn とする。続いてn 個の整数をキーボードから入力する(値は100 以下と仮定してよい)。その後、n 個の整数の中で最小のものを出力したい」 という質問をした者です。 今度は出力された最小の整数が,何番目に入力されたものか を出力したいのですが、どうすればいいですか? 困ってるんでお願いします。 ちなみに、前回の質問の答えはこうなりました。↓ #include <stdio.h> int main(void) { int n, i, t, min=0; scanf("%d",&n); for (i=0; i < n; i++){ scanf("%d",&t); if (i==0){ min=t; } if (min > t) { min=t; } } printf("\n最小:%d", min); return (0); } 3を3つ使ってできる最大の整数は? こんにちは。 「3を3つ使ってできる最大の整数は?」という問題を出されました。ただし条件があるそうです。 (1)四則演算(+-×÷)とカッコはいくつ使ってもよい。 (2)3以外の数字は使ってはいけない。 (3)3はひと桁の整数として使用する。(33や333はだめ) (4)高校数学までで習う数学記号は上記以外に3つまで使用してよい。 (5)できた数は、有限の整数に限る。(無限大になる式などはだめ) 私の解は、 3^(3×(3!)!) ですが、もっと大きな数が作れるでしょうか? 小数か整数かを判定する方法 お世話になります。 ただいま、VB6で悩んでいる事があり質問させていただきに参りました。 1: あるテキストボックスがあり、それには数字のみ入力するのですが、 小数が入力された場合、小数点第1位までしか入力させない、または小数点第2位以下が入力されていた場合、エラーメッセージ表示という処理をしたいのです。 例えば、1.5という文字の入力はOKですが、1.55と入力された場合は、エラーメッセージを表示。 2: 上記のテキストボックスに整数が入力されていたら、Format関数で、"00000"というカタチにして、小数が入力されていたら、"000.0"というカタチにしたいのです。 整数か?小数か?という判定方法が分からず困っています。 熟練者の方々にはとても簡単な事かもしれませんが・・・。 ご教授の程、どうかよろしくお願いします。 入力が整数と判定するに方法教えて下さい。 コマンドラインから、数値を入力してそれが整数であることを判定するには どうしたらよいでしょうか?try chatchは使えません。JAVAで教えて下さい。 >java pgpg 100 整数です。 >java pgpg k 整数でないです。 というような感じ。 整数格子点を列挙するプログラム 『座標上に(0,0),(x,0),(0,y)を頂点とする直角三角形を考え、 xとy(整数)をキーボード上から任意に入力した場合に、 その境界線上も含む整数の格子点を例のように表示する プログラミングを作成せよ。』という問題です。 入力例:(xに3,yに4をキーボード上から入力) > Input x : 3 > Input y : 4 出力例:(入力した整数に応じて以下のように出力) > (0,4) > (0,3) > (0,2) (1,2) > (0,1) (1,1) (1,2) > (0,0) (1,0) (2,0) (3,0) for文を使うと思うのですが、どのようなプログラムを作ればいいのか分らないので、教えてください。 整数問題について 適当ですが、例えば「全ての自然数nについてn^3+5nが3の倍数であることを示せ」 という問題があれば、n=3k、n=3k±1とおいて式に代入しますよね。 整数問題を扱った参考書を見ると、k:整数として置いているのですが、 n^3+5nに実際にn=3kを代入し、 n^3+5n=3(kの式)となっても、kは整数という条件なのでこれにk=0を当てはめれば0になってしまいます。 質問(1) 上の説明 質問(2) k:自然数 とおいて議論を進めても減点はされないのか よろしくお願いします。 もしかすると0も3の倍数…? 条件を満たす最小の整数解 ax^+bx+c=y^2 (a,b,cは既知数、x,yは未知数) x、yがともに正の整数であるとき、 上記の式を満たす最小のxを求めるためには どのような方法があるでしょうか? 例として 81x^2+34634x-375=y^2 という式等です。 考えてはみたものの全く糸口が見つかりません。 ぜひ考え方等をご教授ください。 ちなみに例の式の場合でいうと、 x=23の時 y=916 を得ました。 これは1から代入していって見つかっただけです。 C言語の整数の判別 最近C言語の勉強を始めたのですが、 C言語で、整数だけの入力を許可してそれ以外(文字等)が入力された場合は整数を入力して下さいというメッセージにとばすプログラムを作りたいのですがどうも作り方が良く分からず困っています、いったいどのように作れば良いでしょうか?? 宜しくお願いいたします! 整数の倍数判定についての質問です ある整数が101と73の整数の倍数であるか判定する方法(直接割る残する以外での方法)を考えてその方法が通用する理由を説明せよ。 この問題が分かる方がおられたら、解法よろしくお願いします AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム 整数xxxが大き過ぎますというエラーメッセージ(Java) 最近javaを始めた者です。 javaの初歩的なプログラミングなのですが、long型の変数を定義して例えば10個の数字1234567890をその変数に代入してやるとエラーなくコンパイルされるのですが、 11個以上の数字、例えば12345678900を代入してコンパイルしようとすると質問タイトルのようなエラーメッセージが表示されてしまいます。 long型の変数を使えば11個の数字なら問題なく代入できると理解しているのですが、これは間違っているのでしょうか。 エラーがでる理由がわからなくて困っています。このエラーについて、また、どのようにすれば11個以上の数字が代入できるのか教えてください。お願いします。 分数は整数の中に入る? 初歩的な質問ですみません。 ふと、分数は整数の中に入るかどうか 分からなくなって。 よろしくお願いします。 二つの整数値の大小比較 二つの整数を読みこんでif文でつくるんですが、どうにもできません。 ↓のような感じで入出力すればいいそうです。 二つの整数を入力してください 整数A :83 整数B :45 大きい方の値は83です。 小さい方の値は45です。 そして同じ数字の場合は↓ 二つの整数を入力してください 整数A :17 整数B :17 両方とも17です。 どなたか参考となるプログラムを教えてください!! √の整数部分の問題 「(5+√3)/2の整数部分を求めよ」と云う問題で、、 √3の整数部分が1なので、これを与えられた式に代入して、 (5+1)/2=3とするのは、なぜ、誤りなのでしょうか? ちなみに、正しい解法は、 1<√3<2 5+1<5+√3<5+2 3<(5+√3)/2<7/2 で、やはり、3になるようですが。 ご教示、よろしくお願い致します。 fgetc( )の戻り値はなぜ整数?? fgetc( )は戻り値が整数ですが、あれは何を指しているのでしょう? ポインタに代入すれば値を表示できますが・・・。 EOFを返すために整数なのはわかるのですが・・。 アドレスの値ではないですし、デバックして値をみると、二桁の整数でした。 文字コードかなにかなんですかね・・・。 知っているかたいたら教えてください! よろしくお願いします。 負の整数になるまで入力→その平均を出力という問題なんですが わからないので教えてください。 キーボード入力を負の整数になるまで繰り返し、負の整数を入力したら 負の整数を含めずにその平均値を出しなさい。 という問題なのですが、 僕は繰り返しなので、 do{ System.out.println("整数を入力してください。負の数が入力されたら終了します。"); line = br.readLine(); i= Integer.parseInt(line); }while(i>0); と考えたのですが、これ以上先に進めなくて困っています。 まずこのiに入力されたものを合計しなくてはいけないので、配列を使わないとならないとわかったのですが、配列の使い方がいまいちわかりません。 int []m=new int[i]; と入力し(その前にiを初期化) m[i]= Integer.parseInt(line); としたのですが、うまくいきませんでした。この場合どのように配列を考えればよいのでしょうか。 あと、「最後の入力した負の整数を含まず」ということは、どう書けばよいのでしょうか。 ヒントでもいいので教えてください。よろしくお願いします。 正整数の半角数字かどうか判定する VB.NET2008を使っているのですが、 TextBox1に入力された文字が正整数の半角数字かどうかの 判定をしたいのですが、何かいい方法はないでしょうか? どなたかよろしくお願いします。 文字列と整数型について はじめまして。 どうしても困っているのでヒントでも良いのでおねがいします。 関数内(func1)で確保した文字列変数のポインタを 別の関数(func2)にポインタ渡しします。 func2内で整数型で計算した結果を引数で示された文字列変数に 代入するというようなことをしたいと思ってます。 ここで、intは4byteとします。 メモリ長だけで見ると、bit[4] = tmp です。 void func1(){ char bit[4]; func2(bit); return; } void func2(char* p){ int tmp = 0x10101100; p = tmp; <---- ??? return; } そこでどのようにすれば、 代入することができるのか分かりません。 以下のような結果になるように代入したいと思っています。 bit[0] = 0x10; bit[1] = 0x10; bit[2] = 0x11; bit[3] = 0x00; 小さな文字列型に整数型をどのように渡せばよいのかが 一番疑問に思っているところです。 整数型に文字列型を代入する場合には 文字列のバイト指定とシフト演算で実現できています。 ヒントでもよいのでお願いします。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
Wernerさんありがとうございます。 教えていただいた方法でやってみます。