Mr_tentenのプロフィール

@Mr_tenten Mr_tenten
ありがとう数7
質問数9
回答数4
ベストアンサー数
0
ベストアンサー率
0%
お礼率
55%

  • 登録日2007/05/25
  • 整数データの配列から同じ値のデータを削除する関数

    C言語で整数データの配列から同じ値のデータを削除する関数 int remove_same_data(int a[],int size)を作成する。 但し、この関数は重複したデータを削除して残った個数(整数)を関数の戻り値として返すものとする。 ちなみにここまで出来ました。 下にある途中の1,2,3ができればこのプログラミングができると思うんですが… 分かる方は知恵を貸してください。よろしくお願いします。 #include<stdio.h> void swap_array(int a[], int size, int i) { int t; if(i>=0 && i<size-1){ t=a[i];a[i]=a[i+1];a[i+1]=t; } } void mysort(int a[], int size) { int i,j; for(j=size-1;j>0;j--){ for(i=0;i<j;i++){ if(a[i]>a[i+1]) swap_array(a,size,i); } } } int remove_same_data(int a[], int size) { 1.sort 2.重複部分を削除する 3.残ったデータの個数を返す } int main() { int a[]={3,5,2,3,4,2,3,3,6,6,1,2,2,3,5,8,2,9}, size=18; int i,newsize; newsize = remove_same_data(a, 18); for(i=0;i<newsize;i++){ printf(" %d ", a[i]); } return(0); } 1はこれを使えば出来るらしいのですがよく分かりません。 void swap_array(int a[], int size, int i) { int t; if(i>=0 && i<size-1){ t=a[i];a[i]=a[i+1];a[i+1]=t; } } void mysort(int a[], int size) { int i,j; for(j=size-1;j>0;j--){ for(i=0;i<j;i++){ if(a[i]>a[i+1]) swap_array(a,size,i); } } } 2はこれを使えばできるらしいのですがなかなかできません。 #include<stdio.h> int main() { int a[8]={1,3,3,4,4,5,6,6},size=8; //ソート済みデータの重複の削除 int i,j,p; p=a[0]; //前のデータの記憶 j=0; //削除するデータ数を数える for(i=1;i<size;i++){ if(p==a[i]){ j=j+1; } else{ a[i-j]=a[i];//削除するデータ数分前へ p=a[i]; } } //配列の表示 for(i=0;i<size-j;i++){ printf("%3d ", a[i]);//ここで1,3,4,5,6と表示される } return(0); }

  • 整数データの配列から同じ値のデータを削除する関数

    C言語で整数データの配列から同じ値のデータを削除する関数 int remove_same_data(int a[],int size)を作成する。 但し、この関数は重複したデータを削除して残った個数(整数)を関数の戻り値として返すものとする。 ちなみにここまで出来ました。 下にある途中の1,2,3ができればこのプログラミングができると思うんですが… 分かる方は知恵を貸してください。よろしくお願いします。 #include<stdio.h> void swap_array(int a[], int size, int i) { int t; if(i>=0 && i<size-1){ t=a[i];a[i]=a[i+1];a[i+1]=t; } } void mysort(int a[], int size) { int i,j; for(j=size-1;j>0;j--){ for(i=0;i<j;i++){ if(a[i]>a[i+1]) swap_array(a,size,i); } } } int remove_same_data(int a[], int size) { 1.sort 2.重複部分を削除する 3.残ったデータの個数を返す } int main() { int a[]={3,5,2,3,4,2,3,3,6,6,1,2,2,3,5,8,2,9}, size=18; int i,newsize; newsize = remove_same_data(a, 18); for(i=0;i<newsize;i++){ printf(" %d ", a[i]); } return(0); } 1はこれを使えば出来るらしいのですがよく分かりません。 void swap_array(int a[], int size, int i) { int t; if(i>=0 && i<size-1){ t=a[i];a[i]=a[i+1];a[i+1]=t; } } void mysort(int a[], int size) { int i,j; for(j=size-1;j>0;j--){ for(i=0;i<j;i++){ if(a[i]>a[i+1]) swap_array(a,size,i); } } } 2はこれを使えばできるらしいのですがなかなかできません。 #include<stdio.h> int main() { int a[8]={1,3,3,4,4,5,6,6},size=8; //ソート済みデータの重複の削除 int i,j,p; p=a[0]; //前のデータの記憶 j=0; //削除するデータ数を数える for(i=1;i<size;i++){ if(p==a[i]){ j=j+1; } else{ a[i-j]=a[i];//削除するデータ数分前へ p=a[i]; } } //配列の表示 for(i=0;i<size-j;i++){ printf("%3d ", a[i]);//ここで1,3,4,5,6と表示される } return(0); }

  • 2進数の加算の繰り上がり

    2進数の四則演算のプログラムを作りたいと思い、2進数を表示するところまではできたのですが、加算になると繰り上がりという壁にぶつかってしまいました。繰り上がりや桁上げなどがよく分からないので、お教えください。(下のソースコードが繰り上がりのない加算をするまでのものです) #include <stdio.h> int main(void) { int a,b,i,j,x[8],y[8],z[8]; do{ puts("二つの符号なし整数を入力してください。(ただしa>bとし、bはのべき乗の値とする)"); printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b); if(a < = b) puts("入力した値がa>bになっていません。\a"); }while(a < = b); for( i = 0; i < = 7; i + +){ x[i] = a % 2; a = a / 2; y[i] = b % 2; b = b / 2; } puts("aとbをそれぞれ二進数で表すと"); printf("a="); for( i = 7; i > = 0; i - -){ printf("%d",x[i]); } puts(""); printf("b="); for( i = 7; i > = 0; i - -){ printf("%d",y[i]); } printf("となります。\n\n"); printf("<加算>\n"); printf("c=a+b="); for( j = 7; j > = 0; j - -){ z[j]=x[j]^y[j]; printf("%d",z[j]); } return(0); }

    • ベストアンサー
    • noname#47478
    • C・C++・C#
    • 回答数7
  • 2進数の加算の繰り上がり

    2進数の四則演算のプログラムを作りたいと思い、2進数を表示するところまではできたのですが、加算になると繰り上がりという壁にぶつかってしまいました。繰り上がりや桁上げなどがよく分からないので、お教えください。(下のソースコードが繰り上がりのない加算をするまでのものです) #include <stdio.h> int main(void) { int a,b,i,j,x[8],y[8],z[8]; do{ puts("二つの符号なし整数を入力してください。(ただしa>bとし、bはのべき乗の値とする)"); printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b); if(a < = b) puts("入力した値がa>bになっていません。\a"); }while(a < = b); for( i = 0; i < = 7; i + +){ x[i] = a % 2; a = a / 2; y[i] = b % 2; b = b / 2; } puts("aとbをそれぞれ二進数で表すと"); printf("a="); for( i = 7; i > = 0; i - -){ printf("%d",x[i]); } puts(""); printf("b="); for( i = 7; i > = 0; i - -){ printf("%d",y[i]); } printf("となります。\n\n"); printf("<加算>\n"); printf("c=a+b="); for( j = 7; j > = 0; j - -){ z[j]=x[j]^y[j]; printf("%d",z[j]); } return(0); }

    • ベストアンサー
    • noname#47478
    • C・C++・C#
    • 回答数7