• 締切済み

プログラミングのことで教えていただきたいのですが・・・

以下のプログラムを使用して、8桁の2進数の2の補数を計算するプログラムを作成しなさい。 という問題です。 配列aを変更するとどう変わるか添えて提出しなければならないのですがどうしても分かりません。 void main(){ int a[8]={0,1,0,1,0,1,0,1}; int b[8]; twos_complement(a, b);//補数の計算 print_bin(“a=”,a);/*配列の表示*/ print_bin(“b=”,b); } 実行結果: a=01010101 b=10101011 どなたかご教授お願いします。

みんなの回答

回答No.1

単純に回答を書けば「丸投げ」になりますので まず >8桁の2進数の2の補数を計算するプログラム ですから「2の補数」は理解していますか? 「2の補数」は対象となる内容をビット反転し、その結果に+1することで求められます。 二進数で「00000001」なら、補数は(反転:11111110)+1で「11111111」です。 その補数の計算を >twos_complement(a, b);//補数の計算 で行います。 渡す引数の型などは >int a[8]={0,1,0,1,0,1,0,1}; から判断できます。 >print_bin(“a=”,a);/*配列の表示*/ >print_bin(“b=”,b); は 実行結果 >a=01010101 >b=10101011 から、どのように内容を表示すればよいのかが判断できます。

関連するQ&A

  • 2の補数を計算するプログラム

    2の補数を計算するプログラムを組まなければならないのですが、プログラミングをしばらく行っていなかったのでサッパリわかりません。 void main(){ int a[8] = {0, 1, 0, 1, 0, 1, 0, 1}; int b[8]; twos_complement(a, b); print_bin("a", a); print_bin("b", b); } 上記のヒントを貰ってもう1つ別に変数を作ってそこで処理させるというのは分かるのですが正直言ってちんぷんかんぷんです。 助けてください。

  • プログラミングがわかりません

    1.多倍長数で表現した整数aとint型で表現した整数xを乗算し、その結果をaに格納するプログラムを作れ。 #include<stdio.h> #define KETA 12 int main(void){ int a[KETA] = { 0, 0, 0, 1, 0, 2, 4, 6, 5, 5, 3, 6}; int x = 512; /*必要な変数があれば適宣宣言しなさい*/ /*多倍長数(c) <-- 多倍長数(a) * int型(x)*/ (ア) 出力省略 return 0; } 実行結果 a = 52462354432 2.多倍長数を用いて1から80までの各整数の階乗を計算し、正しい値を表示するプログラムを作れ。 注意 80の階乗を表現するためには、少なくとも119桁の整数を格納できる多倍長数を用いなければならない。 実行結果 1! = 1 2! = 2 3! = 6 ・・・ 3.多倍長数で表現した整数aとint型で表現した整数xで除算し、その結果をaに格納するプログラムを作れ。 aがxで割り切れない場合に生じるあまりは使用せずに捨ててもよい。 除算の途中で現れる整数はint型で表現できる範囲であることを仮定してもよい。 ソースコード #include<stdio.h> #define KETA 12 int main(void){ int a[KETA] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1}; int x = 365; /*必要な変数があれば適宣宣言しなさい*/ /*多倍長数(a) <-- 多倍長数(a) ÷ int型(x)*/ (ア) return 0; } 実行結果 a = 33823777 2はまったくわかりません 1,3の出力はわかるのですが、計算過程がわかりません 教えてくださいよろしくお願いします。

  • プログラミング

    値 n を入力させ、1 から n までの総和を計算して、結果を表示させるプログラムを作成するのですが。入力としては、1~1000000までの数のみを受け付けるものなのですが。 実行例 ./a.out 1 からいくつまでの足し算をしますか? [1-1000000] 1 から 10 まで足した結果は 55 です。 #include<stdio.h> int main(void);

  • コマンドラインのオプションの読み取り

    C++で、引数に/オプションで処理ごとに実行するプログラムを書きたいのですが、具体的にmain関数でどう書けばよいのでしょうか? スマートの方法が知りたいです。 sample.exe /test=1 aの関数を実行 sample.exe /test=2 bの関数を実行 sample.exe /test=3 cの関数を実行 int main(int argc, char**argv) { ... ここの処理? } void a(){ print "A\n"; } void b(){ print "B\n"; } void c(){ print "C\n"; }

  • Javaプログラミング

    Javaプログラミングで分からない課題が出たので、教えてもらえませんか? 実行結果 1つ目の整数を入力してください。 23 2つ目の整数を入力してください。 12 足し算の結果:35 引き算の結果:11 プログラムの大枠はこのようになるのですが public class 〇〇 { public static void main(String[] args) { System.out.println("1つ目の整数を入力してください。"); } public static int add(int a,int b) { return (a + b); public static int sub(int a,int b) { } }

    • ベストアンサー
    • Java
  • Javaプログラミングについて

    ・下記のプログラミングで「//ここで配列を昇順にソートする」というプログラムがわかりません!! わかる方がいましたらサンプルを教えてください。 public class SortNum { public static void main(String[] args){ int[] a={5,9,3,1,7,8,2,6,4}; //数列の初期化 //ここで配列を昇順にソートする //ソートされた配列を出力 for(int i = 0;i < a.length;i++){ System.out.println(a[i]); } } }

  • プログラミング

    C++で、五個の配列を確保し、それらを関数を使って逆順にしたいのですが、別の配列にコピーして逆順にしたいです。下記のプログラムを作ったのですが、どこがいけないのでしょうか? #include "stdafx.h" #include <stdio.h> void reverse (int z[],int w[]); int main(void) { int p[5]={1,2,3,4,5},u[5]; reverse(p,u); printf("逆順=%d\n",p); return 0; } void reverse(int z[],int w[]) { int i; for(i=0;i<=5;i++){ w[i]=z[i-1]; } }

  • プログラミングについて

    課題1: キーボードから整数a, b の値を入力し, を計算して表示するプログラムを作成せよ.ただし,べき乗を計算するユーザ関数 int power(int a,int b) を定義し,関数の再帰的呼び出しを使用すること.なお,b >= 0 とみなし,bが負の値のときは「ここでは扱いません」と表示するようにすること.関数 power() の中で途中の計算も表示するようにすること.  作成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,aの値として「学生番号下1桁 + 3 」 の値を入力し,bの値として「(学生番号下2桁を5で割った余り) + 1」の値を入力したときの結果を[実行結果]の次に貼り付けなさい. 実行結果例 :   (学生番号 0234789 の場合) ( aは a= 9+3= 12 , b は b 整数aを入力して下さい:12 整数bを入力して下さい:5 power(12,0)= 1 power(12,1)= 12 power(12,2)= 144 power(12,3)= 1728 power(12,4)= 20736 power(12,5)= 248832 12の5乗は 248832 です 課題2: キーボードから英字の氏名を「名前_苗字」の順でアンダーバー( 「_ 」の文字) で区切って入力し,その文字列を文字コード順に並び替え,さらにそれについてバイナリサーチを実行して「i」の文字を探すプログラムを作成しなさい.並び替えた文字列およびその中の何番目に「i」が見つかったのかを表示するようにせよ.見つからなかった場合は「見つかりませんでした」と表示するようにせよ.実行結果例を参考にすること. プログラムを作成したら,入力値を色々変えて何回か実行し,プログラムが正しく動作することを確認しなさい.確認が済み次第,作成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,各自の名前と苗字を入力したときの実行結果を[実行結果]の次に貼り付けなさい 実行結果例 :   (氏名: 工大 太郎 の場合) 名前と苗字をアンダーバーで区切って入力してください(各先頭文字は大文字) Kodai_Taro 並び替え後 KT_aadioor i を探します lo=0 x[4]=a hi=9 lo=5 x[7]=o hi=9 lo=5 x[5]=d hi=6 lo=6 x[6]=i hi=6 i は 6番目にありました 課題3: 5桁の正の整数をキーボードより入力し、その各桁の値を降順(大→小の順)に並び換えてそれらを順番に表示するプログラムを作成しなさい.以下の手順に従うこと. (1) int 型のサイズ5の配列 A を用意する. (2) 5桁の正の整数をキーボードより入力し,その各桁の値が一桁目から順番に A の各要素に入るようにする (例:値が12345 のとき, A[0]=5, A[1]=4, A[2]=3, A[3]=2, A[4]=1 となるようにする) (3) Aのデータを選択ソートにより降順に並び替える (2)では繰り返し処理を行なうこととし,for 文を用いること. (ヒント: たとえば 12345 の3桁目を取り出したいとき,まずその数を100 で割る.int 型同士の割り算の場合,小数点以下が切り捨てられるので 123 となる.それを10で割った余りを求めれば 3 が得られる.同様に,4桁目を取り出したいときは,1000 で割った整数値の10で割った余りを求めればよい) (3)は演習(3) で作成したプログラムを参考にすること プログラムを作成したら,入力値を色々変えて何回か実行し,プログラムが正しく動作することを確認しなさい.それが済み次第,完成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,各自の学生番号下5桁の値を入力したときの実行結果を[実行結果]の次に貼り付けなさい. 実行結果例 学生番号0114583の場合  5桁の正の整数値を入力してください 14583 ソート前 3 8 5 4 1 i=0 8 3 5 4 1 i=1 8 5 3 4 1 i=2 8 5 4 3 1 i=3 8 5 4 3 1 ソート後 8 5 4 3 1 課題4: 以下の内容を実行するプログラムを作成しなさい.ただしMには「(各自の学生番号下3桁を5で割った余り)+5」を用いよ.また,Nには「(各自の学生番号下2桁を3で割った余り)+2」 を用いよ.作成したプログラムを以下の [プログラム] の次の行に貼り付けること.また実行結果を[実行結果]の次の行に貼り付けなさい.入力値は,学生番号の一桁目から順に入力し,さらに必要ならば「9,8,7」の順に入力せよ.以下の実行の概念図も参考にすること 実行内容 int 型のサイズ M の一次元配列 x があり,キーボードから値を入力してその配列の各要素に代入する.それらの値を N 個ずつ右にずらしてローテーションする 実行結果例 (学生番号 0123457 の場合) M= (457 を 5で割った余り)+ 5 = 2+5 = 7 N= ( 57 を 3で割った余り)+ 2 = 0+2 = 2      よって,サイズ7の配列のデータを      右に2個ずつローテーション (0) 整数を入力してください 7 (1) 整数を入力してください 5 (2) 整数を入力してください 4 (3) 整数を入力してください 3 (4) 整数を入力してください 2 (5) 整数を入力してください 1 (6) 整数を入力してください 0 ローテーション前 7 5 4 3 2 1 0 ローテーション後 1 0 7 5 4 3 2 課題5: キーボードから文字列を入力し,その文字列の2番目の空白の次の文字以降を表示するプログラムを作成しなさい.ただし,文字列の入力には関数 gets を用いること. また,文字列のアクセスにはポインタを用い,関数 putchar を用いて一文字づつ表示させるようにすること. 実行結果は,学生番号,名前(英語),苗字(英語) をそれぞれスペースで区切って入力したときの結果を表示すること 実行結果例 : 学生番号0112345 氏名 田中健 の場合 文字列を入力してください。 0112345 Ken Tanaka 2番目の空白以降を出力します Tanaka windows vista visual studioでのプログマミングの作成を多いと思いますがとても困っていますのでなにとぞお願いします。

  • javaプログラミング

    JAVAプログラミングです。 教えてください 次のコードを実行すると、 「ary= new int[-5]; 」では例外が発生するのでtry文を用いてこの例外に対する例外処理をしたいんですがどう書けばいいですか?プログラムを実行した後に[例外処理後の実行例〕になるようにしたいです。 〔NegativeArraySizeException 例外を発生するコード〕 class Assignment9_1 { public static void main(String[] args) { int[] ary; // 例外 NegativeArraySizeException が発生 ary=new int[-5]; } } 〔例外処理前の実行結果〕 Exception in thread "main" java.lang.NegativeArraySizeException at Assignment9_1.main(Assignment9_1.java:7) 〔例外処理後の実行例〕 配列要素数の指定は負です

    • ベストアンサー
    • Java
  • 配列の数を途中で増やすには?

    はじめまして。 この度、以下のようなプログラムを作りました。 が、途中で配列の数を増やすことになってしまいました。 ------------------------------------------------ struct a{ int int_a; long int_b; }; struct b{ a *aa; }; void main(void){ b *bb; bb = new b[3]; bb[0].aa = new a[5]; bb[1].aa = new a[4]; . . . } ------------------------------------------------ 具体的には、'bb'の配列を3から5に増やすようなやり方を探しています。 元の配列より大きい配列をつくり、そこにコピーすればいいと考えたのですが、 'bb'内の'aa'の配列も動的に作成しているため、それも出来ない状況です。 どなたかやり方を知っている方がいましたら、教えていただきたいです。 下手な説明ですいません。