C/C++の宿題片付けます 133代目

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2010/01/18(月) 17:23:54
>>951

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void){
char moji[3][10]={"computer","internet","windows"};
int num;
srand((unsigned int)time(NULL));
num=rand()%3;
printf("%s\n",moji[num]);

return 0;
}
953デフォルトの名無しさん:2010/01/18(月) 17:47:23
>>950
中括弧の省略はミスの元

for(i=0;i<num_city;i++) {
if(i!=num_city-1) {
printf(" ランダム法での距離lenは %f\n",len);
len += distance(i,i+1);
}
}
954デフォルトの名無しさん:2010/01/18(月) 18:01:04
>>950
int len;
printf(" ランダム法での距離lenは %f\n",len);

int型を%fで表示しようとしてるのが根本原因のようだ。
955デフォルトの名無しさん:2010/01/18(月) 18:07:32
>>952
短くしてみる

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main(void){
char moji[3][10]={"computer","internet","windows"};
srand((unsigned int)time(NULL));
printf("%s\n",moji[rand()%3;]);
}
956955:2010/01/18(月) 18:08:30
すまんm
moji[rand()%3;]の;は無視してくれ
957デフォルトの名無しさん:2010/01/18(月) 18:39:16
958デフォルトの名無しさん:2010/01/18(月) 18:54:56
画像処理に詳しい方、>>773お願いします。
959デフォルトの名無しさん:2010/01/18(月) 19:38:09
>>895
ありがとうございました!!
960デフォルトの名無しさん:2010/01/18(月) 19:50:05
>>959
>>904を見てみて
961デフォルトの名無しさん:2010/01/18(月) 19:58:54
1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 4行4列のint型の行列を、転置するプログラムを作成し、動作の確認のため、転置前と転置後
の行列の内容を表示するようにせよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月19日 17時
[5] その他の制限: 特になし
962デフォルトの名無しさん:2010/01/18(月) 20:06:49
>>960
本当にありがとうございます!!!
963デフォルトの名無しさん:2010/01/18(月) 20:09:21
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10384.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月22日 12:00まで
[5] その他の制限:

よろしくお願いします。
964デフォルトの名無しさん:2010/01/18(月) 20:20:59
>>953>>954
あざっす。こっから色々いじってきます
965デフォルトの名無しさん:2010/01/18(月) 20:24:42
966デフォルトの名無しさん:2010/01/18(月) 20:42:09
>>924
a,bが重なり合った同サイズの領域のことが考慮されてない
int a[10];
swap((double*)&a[1],(double*)&a[3],sizeof(double));
967デフォルトの名無しさん:2010/01/18(月) 22:25:19
[1] 授業単元:計算機基本
[2] 問題文(含コード&リンク):
1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求めるプログラムを作ってみましょう。
途中経過も表示してください。
例:1^2 + 2^2 =
1^2 + 2^2 + 3^2 =
....
プログラムは↓をできるだけ編集しないでWhile文を使ってお願いします。
#include <stdio.h>
int main(void) {
int i,n,nn;
n=1;
for (i=1;i<=30;i=i+1) {
nn=2*n;
printf("%9d の 2倍は %10d です。\n",n,nn);
n=nn;
}
return 0;
}
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: BCC Developer
 [3.3] 言語: C++
[4] 期限: [2009年1月15日まで]
[5] その他の制限: While 文を使うこと:

While (条件式){
繰り返し実行すべきプログラム

っていうやつです。
前回書いた問題と少し違うのでよろしくお願いします。
968951:2010/01/18(月) 22:34:51
>>952
ありがとうございます。
動作確認しました。
969967:2010/01/18(月) 22:50:55
967には問題文を間違えました。すみませんm(_ _)m
[1] 授業単元:計算機基本
[2] 問題文(含コード&リンク):
1の2倍は2です
2の2倍は4です
4の2倍は16です...
を30回繰り返すプログラム
プログラムは↓をできるだけ編集しないでWhile文を使ってお願いします。
#include <stdio.h>
int main(void) {
int i,n,nn;
n=1;
for (i=1;i<=30;i=i+1) {
nn=2*n;
printf("%9d の 2倍は %10d です。\n",n,nn);
n=nn;
}
return 0;
}
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: BCC Developer
 [3.3] 言語: C++
[4] 期限: [2009年1月19日8時まで]
[5] その他の制限: While 文を使うこと:

While (条件式){
繰り返し実行すべきプログラム

っていうやつです。
970デフォルトの名無しさん:2010/01/18(月) 22:59:08
>>969
#include <stdio.h>
int main(void) {
  int i,n,nn;
  n=1;
  i=1;
  while (i<=30) {
    nn=2*n;
    printf("%9d の 2倍は %10d です。\n",n,nn);
    n=nn;
    i=i+1;
  }
  return 0;
}
971デフォルトの名無しさん:2010/01/18(月) 23:12:35
[1] 授業単元:計算機基本
[2] 問題文(含コード&リンク):
1^2+2^2+3^2+...+8^2+9^2+10^2
プログラムは↓から始めて、While文を使ってお願いします。
#include <stdio.h>
int main(void) {

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: BCC Developer
 [3.3] 言語: C++
[4] 期限: [2009年1月19日8時まで]
[5] その他の制限: While 文を使うこと:

While (条件式){
繰り返し実行すべきプログラム

っていうやつです。
972971:2010/01/18(月) 23:17:34
すみません・・・
問題文をまた間違えてしまいました・・・
↓が正しいです。
1^2+2^2+3^2+...+8^2+9^2+10^2
を求めるプログラムを作ってみましょう
1^2=
1^2+2^2=
1^2+2^2+3^2=
などと途中経過の表示もしなさい
プログラムは↓から始めて、While文を使う。
#include <stdio.h>
int main(void) {

です。何度も間違えてすみません
973デフォルトの名無しさん:2010/01/18(月) 23:26:11 BE:142006853-S★(508111)
次スレ立てました
C/C++の宿題片付けます 134代目
http://pc12.2ch.net/test/read.cgi/tech/1263824755/
974デフォルトの名無しさん:2010/01/18(月) 23:35:15
>>972
#include <stdio.h>
#include <string.h>
int main(void) {
int i,sum;
char buff[128]={0},tmp[16];
i=1;
sum=0;
while(i<=10){
sum+=i*i;
if(i==1)sprintf(tmp,"%d^2",i);
else sprintf(tmp,"+%d^2",i);
strcat(buff,tmp);
printf("%s=%d\n",buff,sum);
i++;
}
return 0;
}
975917:2010/01/18(月) 23:52:08
>>921
大変助かりました。
ありがとうございました。
976デフォルトの名無しさん:2010/01/19(火) 00:18:48
あ、まちがい。
>>921
ave = (double)sum / 5;
977デフォルトの名無しさん:2010/01/19(火) 02:08:31
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):異なる自然数p,qと、もう一つの自然数dを入力する。
d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に表示し、
最後にその個数を表示するプログラムを作成せよ。入力する数字はp、q、dの順とする

実行例
3 5 10
3 5 6 8 9 10
合計で6個あります。
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:VS 2008
 [3.3] 言語:C
[4] 期限:2010年01月19日10:00まで
[5] その他の制限:特になし
978977:2010/01/19(火) 02:09:25
よろしくお願いします。
979デフォルトの名無しさん:2010/01/19(火) 03:14:00
kには0を含めないのに、mとnには0を含めるってのは矛盾じゃね?
どっちも自然数としか書いてないのに
980デフォルトの名無しさん:2010/01/19(火) 03:17:51
>>977
その実行例も含めて、出題された問題文?
981デフォルトの名無しさん:2010/01/19(火) 07:20:58
>>977
#include <stdio.h>

int f(int p, int q, int n)
{
while(n>=0) {
if(n % q == 0) return 1;
n -= p;
}
return 0;
}

int main(void)
{
int p, q, d, i, c = 0;

scanf("%d%d%d", &p, &q, &d);

for(i=1; i<=d; i++) if(f(p,q,i)) printf("%d ", i, c++);
printf("\n合計で%d個あります。", c);

return 0;
}
982デフォルトの名無しさん:2010/01/19(火) 08:18:42
>>973 乙
983977:2010/01/19(火) 09:08:53
ありがとうございました。
984デフォルトの名無しさん:2010/01/19(火) 09:32:37
構造体を使用して、アドレス帳を作るプログラムなんですが、検索する関数がうまく働きません。
言語はCです。いくら悩んでも分からないんで、どなたか指摘をお願いします。

#include <stdio.h> #include <stdlib.h> #include <string.h>

#define DATA_MAX 5 /* データの最大件数 */ #define NAME_LEN_MAX 16 /* 名前の長さ */
#define TEL_NUMBER_LEN_MAX 16 /* 電話番号の長さ */  #define YUUBINN_LEN_MAX 8 /* 郵便番号の長さ */
#define ADDRESS_DATA_MAX 64 /* 住所の長さ */

typedef struct Address_Note{
char name[NAME_LEN_MAX]; /* 名前 */
char tel_number[TEL_NUMBER_LEN_MAX]; /* 電話番号 */
char zip_code[YUUBINN_LEN_MAX]; /* 郵便番号 */
char address[ADDRESS_DATA_MAX]; /* 住所 */
}NOTE;
void input_data(NOTE *p); /* データの入力 */
void print_data(NOTE *p); /* データの出力 */
void data_serch(NOTE *p, NOTE data[]); /* データの検索 */
int g_address_data_count;

int main(void){
char judge;
NOTE data[DATA_MAX];
NOTE *p;
g_address_data_count = 0;
985984(2):2010/01/19(火) 09:33:20
for(p=&data[0]; p!=&data[DATA_MAX]; p++){      input_data(p);
g_address_data_count++;
printf("続けて入力しますか?(Yes:Y、No:N)");
scanf("%s", &judge);
while(judge!='y' && judge!='Y' && judge!='n' && judge!='N'){
      printf("YかNを入力してください:");
scanf("%s", &judge);  }
if(judge=='n' || judge=='N') break;
else if(judge=='y' || judge=='Y') continue; }

if(g_address_data_count == DATA_MAX){      printf("これ以上登録できません。\n");
exit(EXIT_FAILURE);  }

for(p=&data[0]; p!=&data[g_address_data_count]; p++){ print_data(p);  printf("\n"); }
data_serch(p, &data[DATA_MAX]);
return EXIT_SUCCESS;}

void input_data(NOTE *p){
printf("名前を入力してください:");
scanf("%s", p->name);
printf("電話番号を入力してください:");
scanf("%s", p->tel_number);
printf("郵便番号を入力してください:");
scanf("%s", p->zip_code);
printf("住所を入力してください:");
scanf("%s", p->address);
printf("\n");
}
986984(3):2010/01/19(火) 09:34:20

void print_data(NOTE *p){
  printf("名前:%.8s\n電話番号:%.15s\n郵便番号:%.8s\n住所:%s\n", p->name, p->tel_number, p->zip_code, p->address);
}

void data_serch(NOTE *p, NOTE data[]){
int i;
char serch[NAME_LEN_MAX];
char *str;
printf("誰を検索しますか?:");
scanf("%s", serch);
for(p=&data[0]; p!=&data[g_address_data_count]; p++){
str = strstr(p->name, serch);
if(str != NULL)
print_data(p);
}
}

これで最後です。
かなり長く見づらくて申し訳ないですがよろしくお願いします。
987デフォルトの名無しさん:2010/01/19(火) 09:38:17
C言語なら俺に聞け(入門編)Part 59
http://pc12.2ch.net/test/read.cgi/tech/1263014439/
988デフォルトの名無しさん:2010/01/19(火) 09:44:36
>data_serch(p, &data[DATA_MAX]);
data_serch(p, data);
989984:2010/01/19(火) 10:00:15
>>987
全然気付かなかったw
ありがとうございました。
990984:2010/01/19(火) 10:52:59
何度もすみません。
.txtファイルを読み込みたいんですが、記述はおかしくないはずなのにポインタfpに
読み込めず、エラーーメッセージすら出ません。
原因はどんな事が考えられるでしょうか?

int main(void)
{ int i,val;
char judge;
NOTE data[DATA_MAX];
NOTE *p;
FILE *fp;

if((fp = fopen("address_note.txt", "r"))==NULL)
{
printf("ファイルが見つかりませんでした---address_note.txt\n");
exit(EXIT_FAILURE);;
}

i=0;
while(fscanf(fp,"%d",&val)!=EOF)
{
fscanf(fp,"名前:%.8s\n電話番号:%.15s\n郵便番号:%.8s\n住所:%s\n", p->name, p->tel_number, p->zip_code, p->address); /*データの読み込み*/
i++; /*次に移るために「i」を1つ増やす*/
}
991デフォルトの名無しさん:2010/01/19(火) 10:55:35
>>990
p が指す先の領域を指定していない
992デフォルトの名無しさん:2010/01/19(火) 11:00:45
>>991
よく分からないんですが、どんな記述をすればいいんでしょうか?
993:2010/01/19(火) 11:02:56
while(fscanf(....
{
p=(NOTE*)data[...
994デフォルトの名無しさん:2010/01/19(火) 11:03:52
>>992
p=&data[i];
995デフォルトの名無しさん:2010/01/19(火) 11:03:52
>>992
よく分からないんじゃなくて、お前、何一つわかっちゃいないだろ?
fscanfの直前でp = data[i];してみれ。
996955:2010/01/19(火) 11:05:54
何一つ分かってないのは俺の方でしたスミマセン。樹海行ってきます。
997:2010/01/19(火) 11:08:36
ここは質問刷れじゃないんで自己責任で
998デフォルトの名無しさん:2010/01/19(火) 11:16:53


C/C++の宿題片付けます 134代目
http://pc12.2ch.net/test/read.cgi/tech/1263824755/
999デフォルトの名無しさん:2010/01/19(火) 11:21:42
>>997
すみません。

>>995
いえいえ。

>>993-995
おっしゃるとおりにやったんですが、コンパイルしてもfpに代入された値は使用されていないと出ます。
もうさっぱり分からないです…。
1000デフォルトの名無しさん:2010/01/19(火) 11:27:32
>>999
ソースコード全部貼れ馬鹿
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。