トップページ⇒tech
1001コメント315KB

(・∀・)C/C++の宿題やらせてください。ver10

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
私はC++房。
今まで1年*ヶ月、ほとんど毎日休まず一生懸命C++を勉強してきた。
わからない宿題若しくは処理があったら私にやらせてくださいm(_ _)m
前スレ http://pc2.2ch.net/test/read.cgi/tech/1055944101/

8代目: http://pc2.2ch.net/test/read.cgi/tech/1055056940/l50
7代目: http://pc2.2ch.net/test/read.cgi/tech/1053963794/l50
6代目: http://pc2.2ch.net/test/read.cgi/tech/1053045530/l50
5代目: http://pc2.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc2.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc2.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
宿題手伝いますYO!!: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html

ラウンジ:質問が長い時はココを使うと便利
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

0002デフォルトの名無しさんNGNG
2?
0003デフォルトの名無しさんNGNG
四面体の宿題は禁止
0004デフォルトの名無しさんNGNG
どうしても課題が書けません(´・ω・`)
問題はこれです

整数を一つ読み込み、それが素数か否かを判定するプログラムを書け。素数とは、1ごその数自身以外の数では割り切れない数である。
入力した数をxとすると、この問題を解く一つの方法は、xを2,3,4、・・・、√xで次々と割って余りを求めることである。
割った余りが0だったら素数でないと分かる。割り切れないまま繰り返しを続けていって、割る数がxの平方根より大きくなったら
素数であると分かる。

一時間くらい挑戦してたら片方判定出来たり、もう片方判定出来て片方判定できなくなったりしますた・・・
一応ソース張ってみます。
0005デフォルトの名無しさんNGNG
>>4
書けたじゃない。
おめでとう!
0006デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void){
int x,heihoukon,n,i;
printf("x: ");scanf("%d", &x);
i=1;
heihoukon=0;
while(heihoukon*heihoukon<x)
heihoukon=heihoukon+1;
if(heihoukon*heihoukon==x)
printf("heihoukon:%d\n",heihoukon);
else
printf("heihoukon ha %d-1 kara%d no aida \n",heihoukon,heihoukon);
while(i<=heihoukon){
i=i+1;
if(x%i==0)
printf("x is not sosu\n");break;}
if(i>heihoukon)
printf("x is sosuu\n");
return(0);
}
0007デフォルトの名無しさんNGNG
「片方」って意味がわからん。
0008デフォルトの名無しさんNGNG
>>7
素数でないか素数であるかと表示させたいのに片方しか表示されなかったりしました
0009デフォルトの名無しさんNGNG
>>6
breakの位置が変だろ。すぐループ抜けるぞ。
if(x%i==0) {
   printf("x is not sosu\n");
   break;
}
こう書け。これでもまだおかしいがな。

ifとかforは全部{}で囲む癖つけた方が無難だぞ。
0010デフォルトの名無しさんNGNG
>>9
EOFに・・・(´・ω・`)
00119NGNG
>>10
ん??
0012デフォルトの名無しさんNGNG
>>11
変更したら無限ループに突入した模様・・・
あぁわかんない(ノд`)
0013デフォルトの名無しさんNGNG
と思ったら出来ました

(*´д`*)ありがとうございました
0014デフォルトの名無しさんNGNG
一辺10の立方体の内部に整数値を座標にした点を4つランダムに
生成し、その4点を頂点にした四面体の体積および四面体が
立方体の中心を含むか含まないかを表示するプログラムを作成しなさい。

ヒント
点Pが四面体ABCDの内部にあるかどうかは、四面体ABCDの各面とPにより
形成される4つの四面体PABC,PBCD,PCBD,PDABの体積の和が、
の四面体の体積よりも大きい場合にはPは四面体の外部にある。

お願いします。
0015デフォルトの名無しさんNGNG
>>14
http://pc2.2ch.net/test/read.cgi/tech/1055944101/958
0016デフォルトの名無しさんNGNG
>>4
これ使え。
int isprime(int n) {
int x;
for (x = 2; x * x <= n; x++)
if (n % x) return 0;
return 1;
}
何度書いたんだろう、この関数。
0017デフォルトの名無しさんNGNG
>>16
>if (n % x) return 0;
わざと?
0018デフォルトの名無しさんNGNG
if (n % x == 0) return 0;
0019デフォルトの名無しさんNGNG
正の整数値 n を読み込み,偶数の時はその値を 2 で割り,また,
奇数の時はその値を 3 倍したものに 1 を加えるという処理を
n の値が 1 になるまで繰り返すプログラムを書いてください。
その際,入力された値,及び,各演算を行った結果得られた n の値を,
得られた順番に1つ以上のスペースを空けて出力すること。

C++です。どうかよろしくお願いします・・・。
0020デフォルトの名無しさんNGNG
Cだけど。
void hoge(int n) {
while (n != 1) {
printf("%d ", n);
if (n % 2 == 0) n /=2;
else n = 3*n + 1;
}
}
0021デフォルトの名無しさんNGNG
複数の文字列からなるリストからキーとなるデータを探し、もしそれがあればそのあとに新しいデータを、
もし無ければ先頭に新しいデータを挿入するプログラムを作成せよ。
たとえば、asakura itoh sakataで、itohをキーとして検索し、新しいデータをyamadaとして、asakura itoh yamada sakata とします。
tanakaをキーとして検索すると、ないので、tanaka asakura itoh sakataとします。

C言語の宿題です。お願いします。
0022その壱NGNG
>>19
C++ 初めて使うけど

#include <iostream>
typedef unsigned long long int U64 ;

typedef struct Struct_NumList
{
  U64 Num ;
  Struct_NumList* Next ;
} NumList ;

class Collatz
{
  private:
    NumList* First ;
    NumList* Add ( U64 num ) ;
    void Del ( NumList* ptr ) ;
    void Out ( NumList* ptr ) ;
  public:
    Collatz ( U64 num ) ;
    ~Collatz () ;
    void Out ( void ) ;
} ;
0023その弐NGNG
NumList* Collatz::Add ( U64 num )
{
  NumList* ptr ;
  ptr = new NumList ;
  ptr->Num = num ;
  if ( num == 1 ) ptr->Next = NULL ;
  else
  {
    if ( num & 1 ) num = num * 3 + 1 ; else num = num / 2 ;
    ptr->Next = Add ( num ) ;
  }
  return ptr ;
}

void Collatz::Del ( NumList* ptr )
{
  if ( ptr->Next != NULL ) Del ( ptr->Next ) ;
  delete[] ptr ;
  return ;
}

void Collatz::Out ( NumList* ptr )
{
  if ( ptr != NULL )
  {
    std::cout << ptr->Num << " " ;
    Out ( ptr->Next ) ;
  }
  else std::cout << std::endl ;
  return ;
}
0024その参(ラスト)NGNG
Collatz::Collatz ( U64 num )
{
  if ( num != 0 ) First = Add ( num ) ; else First = NULL ;
}

Collatz::~Collatz ()
{
  Del ( First ) ;
}

void Collatz::Out ()
{
  Out ( First ) ;
  return ;
}

int main ()
{
  U64 n = 2 ;
  {
    Collatz* C ;
    C = new Collatz ( n ) ;
    C->Out() ;
    delete C ;
  }
  return 0 ;
}
002522-24NGNG
>>24のCollatzのデストラクタをミスってた

Collatz::~Collatz ()
{
  if ( First != NULL ) Del ( First ) ;
}
0026その壱NGNG
>>21
動作未確認だけど、こんな感じで
各種関数の使い方とエラー時の始末は自分で考えて下さい

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

typedef struct Struct_Data
{
  char *Name ;
  struct Struct_Data *Next ;
} Data ;

typedef struct
{
  Data *First ;
} List ;

Data *NewData ( char *str )
{
  Data *New = malloc ( sizeof ( Data ) ) ;
  New->Name = malloc ( strlen ( str ) + 1 ) ;
  strcpy ( New->Name, str ) ;
  return New ;
}
0027その弐NGNG
List *NewList ()
{
  List *New ;
  New = malloc ( sizeof ( List ) ) ;
  New->First = NULL ;
  return New ;
}

void AddList ( List *list, Data *New )
{
  Data *Cur = list->First ;
  while ( Cur != NULL )
  {
    if ( strcmp ( Cur->Name, New->Name ) == 0 )
    {
      New->Next = Cur->Next ;
      Cur->Next = New ;
      break ;
    }
    else Cur = Cur->Next ;
  }
  if ( Cur == NULL )
  {
    New->Next = list->First ;
    list->First = New ;
  }
  return ;
}
0028その参(おまけ)NGNG
void AddString ( List *list, char *str )
{
  AddList ( list, NewData ( str ) ) ;
}
0029デフォルトの名無しさんNGNG
>>19
#include <iostream>

using namespace std;

int main(void)
{
unsigned n;
cin >> n;

while(n > 1)
{
int i = n;

if(i % 2 == 0)
i = i / 2;
else
i = i * 3 + 1;

cout << n << ' ' << i << endl;

n--;
}

return(0);
}
0030デフォルトの名無しさんNGNG
文字列を入力して、その文字列が逆から読んでも同じ文字列かどうか判定するプログラム、というのはどう書けばよいのでしょうか・・?
よろしくお願いします。。。
0031デフォルトの名無しさんNGNG
>>30
#include<stdio.h>
#include<string.h>
#define TRUE 1
#define FALSE 0

int isreverse( const char *word ){
int i, len;

for( i = 0, len = strlen( word ) - 1; i < len; i++, len-- ){
if( word[i] != word[len] )
return FALSE;
}
return TRUE;
}

入力文字列 word の改行コードは、ヌル文字で上書きしておいてね♪
0032デフォルトの名無しさんNGNG
>>31
ありがとうございます。解法が判りました
0033デフォルトの名無しさんNGNG
下記の2つのプログラムをForループの処理が終わるたびに配列を表示するように
改良してください。

#include <stdio.h>
#define swap(type, x, y)do {type t = x; x = y; y = t; } while (0)
void bubble(int a[], int n)
{
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = n - 1; j > i; j--)
if (a[j - 1] > a[j])
swap(int, a[j - 1], a[j]);
}
}
int main(void)
{
int i;
int x[7];
int nx = sizeof(x) / sizeof(x[0]);
printf("%d個の整数を入力せよ。\n", nx);
for (i = 0; i < nx; i++) {
printf("x[%d] : ", i);
scanf("%d", &x[i]);
}
bubble(x, nx);
puts("昇順にソートしました。");
for (i = 0; i < nx; i++)
printf("x[%d] = %d\n", i, x[i]);
return (0);
}
003433NGNG
2つめ


/*--- 単純交換ソート(第2版:交換回数による打ち切り) ---*/
void bubble(int a[], int n)
{
int i, j;

for (i = 0; i < n - 1; i++) {
int exchg = 0;/* パスにおける交換回数 */
for (j = n - 1; j > i; j--)
if (a[j - 1] > a[j]) {
swap(int, a[j - 1], a[j]);
exchg++;
}
if (exchg == 0) break;/* 交換が行われなかったら終了 */
}
}
0035デフォルトの名無しさんNGNG
>>33
なんかよ〜わからん。
003633NGNG
>>35

このプログラムは並び替えをするプログラムです。

たとえば、
22 5 11 32 120 68 70
を入力すると
5 11 22 32 68 70 120
を出力するのです。

その並び替える途中を、たとえば
22 5 11 32 68 120 70
・
・
・
というのを出力して欲しいのです。

よろしくお願いします。
0037デフォルトの名無しさんNGNG
>>33-34
ん〜と、バブルソートのソートっぷり(?)を見たいんだよね?

1つ目の方
void bubble(int a[], int n)
{
int i, j;
for ( i = 0; i < n - 1; i++ ) {
for ( j = n - 1; j > i; j-- ){
if (a[j - 1] > a[j])
swap(int, a[j - 1], a[j]);
}
for( j = 0; j < n; j++ )
printf("%d ",a[j]);
printf("\n");
}
}
0038デフォルトの名無しさんNGNG
2つ目の方
void bubble( int a[], int n )
{
int i, j;

for ( i = 0; i < n - 1; i++ ) {
int exchg = 0;/* パスにおける交換回数 */
for ( j = n - 1; j > i; j-- )
if ( a[j - 1] > a[j]) {
swap( int, a[j - 1], a[j] );
exchg++;
}
if ( exchg == 0 ) break;/* 交換が行われなかったら終了 */
for( j = 0; j < n; j++ )
printf("%d ",a[j]);
printf("\n");
}
}
003937=38NGNG
う、リロードしないで書き込んじゃった…。
問題解釈はあっていたみたいだね。
ちなみに両方とも確認済み。
0040デフォルトの名無しさんNGNG
>>21ですけど、>>26-27にヒント頂いたにもかかわらず未だにできません(TДT)
誰か助けて・・・
004126-28NGNG
>>40
ちょっとした勘違いで>>26-28は、そのままでは駄目ポ
と言う訳で、お詫びに全部作り直したので、少し待っててね
0042(´・ω・`)NGNG
3次元上の点でp1,p2,p3,p4があるとする。p1,p2は水平で、p3,p4も水平であり、
この2線は平行している。p1,p2を結んだ中点とp3,p4を結んだ中点を結んだものが
対称面となる。
このとき、この法線ベクトルを求めるプログラムを書きなさい。

どう書けばいいの・・・?_| ̄|○||||
0043デフォルトの名無しさんNGNG
>>42
まぁお前は3Dゲーム作りは不可能ってこった
0044デフォルトの名無しさんNGNG
こいつ文字列を構造体に格納する宿題でさんざん荒らした香具師じゃね−のか?
俺ぜってー答えないことに決めた。
0045某所の339NGNG
>>42
http://pc2.2ch.net/test/read.cgi/tech/1056806789/339
0046デフォルトの名無しさんNGNG
>>44
つーか、答えられないんだろ。
0047デフォルトの名無しさんNGNG
→□□□□□
  □■□■□
  □□■□■
  ■□■□■
  □□□□□→
左上から入り、右下へ出る迷路のプログラム(黒は通れない)を、
反復深化でプログラミングを書き換えろと言う宿題が出たのですが、
さっぱりわかりません。
0048デフォルトの名無しさんNGNG
点と点を結んだら線にしかならんと思うが・・・
0049デフォルトの名無しさんNGNG
#include <stdio.h>

int m[7][7]={{2,2,2,2,2,2,2},
{2,0,0,0,0,0,2},
{2,0,2,0,2,0,2},
{2,0,0,2,0,2,2},
{2,2,0,2,0,2,2},
{2,0,0,0,0,0,2},
{2,2,2,2,2,2,2},};

int Si,Sj,Ei,Ej,success,
sp,ri[100],rj[100];

int visit(int,int);

void main(void)
{
sp=0;
success=0;
Si=1; Sj=1; Ei=5; Ej=5;

printf("\n迷路の探索\n")
if (visit(Si,Sj)==0)
printf("出口は見つかりませんでした\n")
}
0050デフォルトの名無しさんNGNG
つづきです。

int visit(int i,int j)
{
int k;

m[i] [j]=1;
ri[sp]=i,rj[sp]=j;sp++;

if(i==Ei && j==Ej){
for(k=0;k<sp;k++)
printf("(%d,%d)",ri[k],rj[k]);
success=1;
}

if(success!=1 && m[i][j+1]==0) vidit(i,j+1);
if(success!=1 && m[i+1][j]==0) vidit(i+1,j);
if(success!=1 && m[i][j-1]==0) vidit(i,j-1);
if(success!=1 && m[i-1][j]==0) vidit(i-1,j);

sp--;
return(success);
}
0051デフォルトの名無しさんNGNG
どうか、よろしくお願いいたします。
0052デフォルトの名無しさんNGNG
書いたのは、与えられたプログラムで、
これを反復深化で書き直せというのが、問題です。
わかるづらくてすいません。
005326-28NGNG
>>40
ホイ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=101
0054デフォルトの名無しさんNGNG
>>51
??
0055デフォルトの名無しさんNGNG
VC++を独学で勉強するのによい参考書しりませんか?
0056デフォルトの名無しさんNGNG
黙って宿題してろ
0057デフォルトの名無しさんNGNG
>>42
問題文が意味不明だぞ。
p1,p2が水平ってどういう意味だ?
図にして説明してみろ。
0058デフォルトの名無しさんNGNG
>>54
47、49、50、51、52
が自分の書き込みです。
よろしくお願います。
0059デフォルトの名無しさんNGNG
>>55
推薦図書/必読書のためのスレッド PART 11
http://pc2.2ch.net/test/read.cgi/tech/1055082087/

個人的にはピアソンだと思うぞ
0060デフォルトの名無しさんNGNG
>>53
ありがとうございましたm(_ _)m
0061デフォルトの名無しさんNGNG
スレッドのわかりやすいサンプルを教えてください。
お願いします。
0062デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=102&fi=no

ここにおくんですね…。
47、49、50、51、52、58が自分です。
よろしくお願いします。
0063_NGNG
http://homepage.mac.com/hiroyuki44/jaz09.html
006433NGNG
>>37さん、レスありがとうございます。
一つ目を実行してみたところ

5 22 11 32 68 120 70
5 11 22 32 68 70 120
5 11 22 32 68 70 120
5 11 22 32 68 70 120
5 11 22 32 68 70 120
5 11 22 32 68 70 120

とおかしな出力になってしまいました。
さらなる改良をよろしくお願いします。
0065デフォルトの名無しさんNGNG
そんでいいんちゃう?
0066デフォルトの名無しさんNGNG
>>65 実況中継が欲しいのでは?
5 22 11 32 68 120 70
5 11 22 32 68 70 120
おおっ〜と、ここで 11 と 22, 120 と 70 がそれぞれ入れ替わりました
いや〜、今日もXXX(←関数名)は良い仕事をしてますね
006737NGNG
…見切った! 多分、
htttp://hspcenter.com/hspsc1/hsp19.html
↑これの下の方にある「数列の変化の様子」みたいなのを再現したいんでしょう!?
じゃあ、バブルソートモドキ関数を真・バブルソート関数にして…

1つ目の方
void bubble( int a[], int n )
{
int i, j;
for ( i = n; i > 0; i-- ) {
for ( j = 1; j < i; j++ )
if ( a[j - 1] > a[j] )
swap( int, a[j - 1], a[j] );
for( j = 0; j < n; j++ )
printf("%d ",a[j]);
printf("\n");
}
}
006837NGNG
2つ目の方
void bubble(int a[], int n)
{
int i, j;

for ( i = n; i > 0; i-- ) {
int exchg = 0;/* パスにおける交換回数 */
for ( j = 1; j < i; j++ )
if ( a[j - 1] > a[j] ) {
swap( int, a[j - 1], a[j] );
exchg++;
}
if ( exchg == 0 ) break;/* 交換が行われなかったら終了 */
for( j = 0; j < n; j++ )
printf("%d ",a[j] );
printf("\n");
}
}
006937NGNG
あ、今思いついたんだけど、もしかして swap 関数が呼び出される度に表示したいのかな?
それも違うんだったら、表示の具体例を書き込んでね♪
0070デフォルトの名無しさんNGNG
>>47 問題
>>49-50 書き換える前の物
>>51 頼んだ
という事か。反復進化ってなに?調べても5件しかないし、そのうち3件は、
キャッシュが使えなく、スクロールが遅い変なページだし。
0071デフォルトの名無しさんNGNG
>>33
2つ目は自分でヤッテ

void bubble( int a[], int n )
{
int i, j, k;

for ( i = n; i > 0; i-- )
{
for ( j = 1; j < i; j++ )
{
if ( a[j - 1] > a[j] )
{
swap( int, a[j - 1], a[j] );
for( k = 0; k < n; k++ )
printf("%d ",a[k]);
printf("\n");
}
}
}
}
0072デフォルトの名無しさんNGNG
>>70
よう分からんけど、言葉の響きと、実際のソースから推測すると
再帰を使わずに、同様の処理をしろと言う事ではなかろうか?
0073デフォルトの名無しさんNGNG
>>70
反復深化で検索し直せ
0074デフォルトの名無しさんNGNG
>>70
深さ優先探索の深さに限度を設定し、
解が見つかるまで、上限値を段階的に増やしていくというやり方です。
1回で解が見つからなければ、さらにもう1手探索をし、
それでもだめならば、もう1手と、上限値を1手ずつ増やしていく
という方法のことです。

よろしくお願いします。
0075デフォルトの名無しさんNGNG
2次元配列に複数の文字列を読み込み、文字数の長さ順にソートして表示するプログラムを作成せよ。
ただし、ポインタ変数を用いること。


2次元配列のときのポインタの使い方が分かりません・・・
0076デフォルトの名無しさんNGNG
>>75
勉強しましょう。
0077デフォルトの名無しさんNGNG
char **InputData;
InputData = (char **)malloc(sizeof(char*) * データの個数);
for(i=0;i<データの個数;i++){
InputData[i] = (char *)malloc(sizeof(char) * 1つの文字列の最大長);
gets(InputData[i]);// (σ´д`)σ
}
文字列の長さは、strlen(InputData[i])で。
ソートを行う場合は、strcpy連発するよりもポインタでの交換が吉。
詳しくは >>80 が説明してくれるはず。
0078デフォルトの名無しさんNGNG
説明しようと思ったけど80じゃないから遠慮しよう。
0079デフォルトの名無しさんNGNG
int main(void)
{
char str[] = "aiueo";
char *ptr = str;
---------------------------------------------------
以上のような変数宣言をしたときの
1.ポインタ変数のアドレス
2.ポインタ変数に格納されている値
3.ポインタ変数が参照する配列変数の先頭アドレス
4.ポインタ変数の参照先データ
をそれぞれポインタ変数を用いてポインタの位置を文字数分まで1つずつ
進めながら16進数で確認するプログラムを作成せよ

という問題なのですが、3つ目のがよく分からなくて・・。

printf("%x",????);

これの????には何を入れるべきなんでしょうか?
誰か教えてもらえませんか?(⊃д⊂)
0080デフォルトの名無しさんNGNG
>>79
わからなくて当然。ポインタを16進数で表示する汎用的な方法はないから。
できるのは4だけだな。

0081デフォルトの名無しさんNGNG
>>80
16進数って%xかなって思ったんですけど、コレは勉強になりました。
でも・・・コレをやらないといけないんですヽ(;´Д`)ノ
「ポインタ変数が参照する配列変数」っていうのは「str」の事ですか?
それの先頭アドレスっていうのは「&str[0]」の事なのかな・・・?
それをポインタ変数を用いて書くから・・・あひゃ。
0082デフォルトの名無しさんNGNG
>>81
%xは符号無し整数型の値を16進で表すものであって、ポインタの値を表示するものではない。出題者にもそう言うべき。
単に「ポインタの値を表示しろ」なら%pでできるんだが。

> 「str」の事ですか
うん

> 「&str[0]」の事なのかな
そう。strだけでもいいけど。
0083宿題NGNG
変数Aに任意の正の整数を代入し、その1の桁を四捨五入して
表示するプログラムを作ってもらえませんか?
0084デフォルトの名無しさんNGNG
printf("%d\n",(A+5)/10*10);
0085デフォルトの名無しさんNGNG
>>83
printf("%d",a%10>=5?a+10-a%10:a-a%10);
0086デフォルトの名無しさんNGNG
>>80
そうなのかなあ。
処理系定義の方法で整数に変換できると思うのだけど。
null pointer だけは整数 0 に変換されると仕様で定義されてる。
変換結果を整数で表せない場合のみが未定義。

大抵の宿題では特定の処理系が仮定されていることを考えれば、
移植性に関するコメントは無用なのでは。
0087デフォルトの名無しさんNGNG
処理系依存でいいなら%pを使えば。
おそらく16進数で表示されるだろうし。
0088デフォルトの名無しさんNGNG
>>86
宿題だからこそ重箱の隅をつついて高得点get
0089デフォルトの名無しさんNGNG
宿題ぽっちでそんな変わるかね。
趣旨理解して、無駄なく卒なくで良いじゃん。
0090デフォルトの名無しさんNGNG
intとかでキャストして16進表示は?
0091デフォルトの名無しさんNGNG
アドレスのサイズと int のサイズが
同じとは限らないからねぇ。
0092デフォルトの名無しさんNGNG
ポインタのアドレスをchar*にキャストしてsizeof(ポインタ)のぶんだけ出力するってのはどうか?
0093デフォルトの名無しさんNGNG
ifとかで出来る簡単な電卓プログラムを
お願いします
0094デフォルトの名無しさんNGNG
#include <stdio.h>
#include <string.h>
#include <math.h>
int
main(void)
{
    char op,buf[BUFSIZ]; int x,y;
    fprintf(stderr, "try: 2*3\n");
    while(!feof(stdin)) {
        fprintf(stderr, "> ");
        fgets(buf,BUFSIZ,stdin);
        if (3 == sscanf(buf, "%d %1[-+*/^] %d", &x, &op, &y)) {
            switch(op) {
            case '+': fprintf(stderr, "= %d\n", x+y); break;
            case '-': fprintf(stderr, "= %d\n", x-y); break;
            case '*': fprintf(stderr, "= %d\n", x*y); break;
            case '/': fprintf(stderr, "= %g\n", (double)x/y); break;
            case '^': fprintf(stderr, "= %g\n", pow(x,y)); break;
            }
        }
    }
    return 0;
}
0095デフォルトの名無しさんNGNG
サンクスです
009696NGNG
符号なし整数nのビット位置pから下位qビットを取り出す関数unsigned GetBit(unsigned n,int p,int q)を作成しなさい。ただし、右端をビット位置0とし、返すビット列は右詰とする。

お願いします。
0097デフォルトの名無しさんNGNG
>>96
unsigned GetBit(unsigned n,int p,int q)
{
return (n>>(p-q+1))&((1<<q)-1);
}
0098デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
void main(void)
{
int kotae; /* コンピュータが決めた答え */
int su; /* 入力値 */
int ten; /* 得点 */
int kaisu = 0; /* 入力回数 */
/* 乱数で答えを取得する */
kotae = rand()%20; /* 乱数の種を設定 */
kotae+=1; /* 乱数(1〜20)をkotaeに代入 */
/* 正解するかタイムオーバーになるまで数当てをする */
printf("1〜20までの数値を入力してください。\n");
do
{
kaisu = kaisu + 1; /* 入力回数+1 */
printf("%d回目の入力 = ",kaisu);
scanf("%d",&su); /* suを入力 */
/* 入力値によってヒントメッセージを表示する */
}while(kaisu < 6 || kotae != su || clock()/CLOCKS_PER_SEC <=3);
if(kotae == su)
{
ten = 120 - (20*kaisu);
printf("\n正解です。\n貴方の得点 %d点\n",ten);
}
else
{
printf("\nゲームオーバー\n");
}
}
よろしくお願いします。
009998NGNG
数当てゲームを課題で作っているのですが上手く出来ませんでした。
問題点は乱数なのに数値が2に固定されているのと正解しても抜け出せない。
秒数制限してあるのに秒数制限されていないという2点です。
あとはヒントをif文で表示するのですが上手く出来きませんでした。ヒントは不正解の時にヒントを表示するのですが誤差を5ずつに設定します。
      入力値<答え−5
答えー5<=入力値<答え
答え  < 入力値<=答え+5
答え+5< 入力値
という感じです。
0100デフォルトの名無しさんNGNG
ガンダムシード
0101デフォルトの名無しさんNGNG
forで10000回ループして、最後にhello,worldを出力するまでの
時間を測るにはどうしたらいいですか?
#include <stdio.h>
int main(){
int a;
for(a=1;a<=10000;a++){
if(a==10000){
printf("Hello,world");
}
}
}

0102デフォルトの名無しさんNGNG
保守
0103デフォルトの名無しさんNGNG
>>101
現時刻記録:A

処理

現時刻記録:B

B-A
0104デフォルトの名無しさんNGNG
現時刻記録ってのはtimeを使うのですか?
分かりやすい説明ありがとうございます。
0105デフォルトの名無しさんNGNG
ヽ(`Д´)ノ
 (   )
() ()
 ̄  ̄
0106デフォルトの名無しさんNGNG
>>98
とりあえずbreakいれとけ
0107デフォルトの名無しさんNGNG
>104
結婚してください
0108104NGNG
>>107
えんりょーしときます。

どうか教えてもらえませんか
0109デフォルトの名無しさんNGNG
>>108
clock
10000は少なすぎる・・・
0110104NGNG
2〜3秒かけて処理をするには
何回くらいループしたらいいですか?
0111デフォルトの名無しさんNGNG
>>110
マシン性能に左右される。やってみるしかない。

環境依存になるけどタイマーつかった方がいいかと
0112デフォルトの名無しさんNGNG
>>110
マルチタスクではそんなんわかんないよ。
根本的に変えたほうがいい。
0113104NGNG
ありがとうございます。
もっとググってきます
0114デフォルトの名無しさんNGNG
現在時刻を取得しながあ無限ループさせて、
ループに入る直前の時刻から3秒たってたらbreak;
0115デフォルトの名無しさんNGNG
>>114
×3秒たってたらbreak
○3秒以上たってたらbreak
0116デフォルトの名無しさんNGNG
ここにプログラム書いたら何処が間違ってるか
突っ込んでくれるかなぁ・・・
0117デフォルトの名無しさんNGNG
1+5とか入力して、下のプログラムを実行させたいんですけど、
関係ない記号を入れると最後の一文を表示させたいんです。
でもどうしてもできないんですよ。どうしましょ?
よろです。

if(mar=='+')
{
printf("%f%c%f=%f\n",a,mar,b,a+b);
}
else if(mar=='-')
{
printf("%f%c%f=%f\n",a,mar,b,a-b);
}
else if(mar=='/')
{
printf("%f%c%f=%f\n",a,mar,b,a/b);
}
else if(mar=='*','x','X')
{
printf("%f%c%f=%f\n",a,mar,b,a*b);
}
else if(mar!='+','-','/','*','x','X')
{
printf("演算子を間違ってませんか?\n");
}
0118デフォルトの名無しさんNGNG
コード貼るのは別の場所にしたら、誰か突っ込んでくれるんでない?
0119デフォルトの名無しさんNGNG
else if(mar=='*','x','X')
else if(mar!='+','-','/','*','x','X')
ダメじゃん。
0120デフォルトの名無しさんNGNG
えっ?
0121デフォルトの名無しさんNGNG
elseだけでいいやん。%fもそれでええの?
0122デフォルトの名無しさんNGNG
>>117

> if (mar=='*','x','X')
Cならばこれはおかしいかと。
mar の型も知りたいところですし、適当な場所に全コードを
掲示していただけると、アドバイスしやすくて助かります。
0123デフォルトの名無しさんNGNG
else if(mar=='*','x','X')は
else if(mar=='*' || mar == 'x' || mar == 'X')に

else if(mar!='+','-','/','*','x','X')は
elseに替える。
0124デフォルトの名無しさんNGNG
>>122

お手数かけます。%fとかは気にしないで下さい。
最後の演算子を間違ってませんかが出ればいいだけなんです。
ttp://jooo.k-server.org/cul.txt
0125デフォルトの名無しさんNGNG
大人しくswitch使えよ
0126デフォルトの名無しさんNGNG
出来ました。お手数お掛けしました。馬鹿ですみません。
0127デフォルトの名無しさんNGNG
switch(mar){
case '-':
 printf("%f%c%f=%f\n",a,mar,b,a-b);
 break;
case '+':
printf("%f%c%f=%f\n",a,mar,b,a+b);
break;
case '/'
printf("%f%c%f=%f\n",a,mar,b,a/b);
break;
case '*':
case 'x':
case 'X':
printf("%f%c%f=%f\n",a,mar,b,a*b);
break;
default:
printf("演算子を間違ってませんか?\n");
break;
}
0128デフォルトの名無しさんNGNG
CPUの周波数によって表示を変えたり
メモリーの容量で表示を変えたり
HDDの容量で表示変えたり
OSによって表示変えたり実行できるOS制限したり

できませんか?
0129デフォルトの名無しさんNGNG
できますよ
0130デフォルトの名無しさんNGNG
どうやって?
0131デフォルトの名無しさんNGNG
>128
マルチ厨ハケーン
0132ゆうじNGNG
この宿題を解いてください。

GNU MPライブラリを用いて二項係数 nCkを求める関数
void my_mpz_binom(mpz_t rop, int n, int k) を作成し、
70 C 13 を求めよ。
 
0133デフォルトの名無しさんNGNG
:
0134デフォルトの名無しさんNGNG
ループでできたかな。
あと、GNU MPライブラリって多倍長ライブラリ?
0135ゆうじNGNG
>134
その通りです。
0136_NGNG
http://homepage.mac.com/hiroyuki44/jaz08.html
0137専門学校生NGNG
今年から専門学校に通いだしてC言語の宿題でわからないのがいくつかでてきました。
解いてください。
<処理条件>
入出力様式に従って、3つの整数を入力し、条件にしたがって結果を表示するプログラム
(条件)
すべてが等しい場合・・・「全てが等しい」と表示した後、数値を表示。
2つが等しい場合・・・「2つが等しい」と表示した後、最大値、最小値を表示。
すべてが等しくない場合・・・「全てが等しくない」と表示した後、最大値と最小値を表示。
<入出力方式>
Input(a,b,c)=xxx,xxx,xxx

結果:xxxxxxxxxxx
値:xxx
0138専門学校生NGNG
もう一つあります。
<処理条件>
出力方式に従って、1〜10までの数値の中で、奇数の和、偶数の和を求めて表示するプログラム。
計算にはfor文をつかう。
<出力方式>
奇数の和=xx
偶数の和=xx
0139デフォルトの名無しさんNGNG
#include <stdio.h>

int main()
{
int a,s=0,d=0;
for(a=1;a<=10;a++)
a&1?(s+=a):(d+=a);
printf("奇数の和=%d\n偶数の和=%d\n",s,d);
return 0;
}
014014歳NGNG
>>138
君何年生?
0141デフォルトの名無しさんNGNG
>>140
今年から専門学校に通いだして・・・
014214歳NGNG
>>141
余談だが年間学費いくら?
0143デフォルトの名無しさんNGNG
>>142
あの・・・検索という言葉を知っていますか?
0144デフォルトの名無しさんNGNG
#include <stdio.h>
int main(){
int a,b=0,c=0;
for(a=1;a<=10;a++){
if(a%2==1){
b=a+b;
}
else{
c=a+c;
}
}
printf("奇数の和は%d\n",b);
printf("偶数の和は%d",c);
return 0;
}
0145141NGNG
俺は137-138ではないので知らん。
0146デフォルトの名無しさんNGNG
>>144が分かりやすい!
0147デフォルトの名無しさんNGNG
>>132
/* GNU MPライブラリを用いて二項係数 nCkを求める関数 */
void my_mpz_binom(mpz_t rop, unsigned long n, unsigned long k)
{
if (n < k) {
mpz_set_ui(rop, 0); /* 引数が不正のときは0としておく */
return;
}
mpz_t fact_n, fact_nk, fact_k, fact_tmp;
mpz_init(fact_n); mpz_init(fact_nk); mpz_init(fact_k); mpz_init(fact_tmp);
my_mpz_fact(fact_n, n); /* fact_n <- n! */
my_mpz_fact(fact_nk, n-k); /* fact_nk <- (n-k)! */
my_mpz_fact(fact_k, k); /* fact_k <- k! */
mpz_mul(fact_tmp, fact_nk, fact_k); /* fact_tmp = (n-k)!*k! */
mpz_cdiv_q(rop, fact_n, fact_tmp); /* rop = n!/((n-k)!*k!) */
}

/* 階乗の計算 */
void my_mpz_fact(mpz_t rop, unsigned long n)
{
mpz_set_ui(rop, 1); /* rop <- 1 */
for (unsigned int nn = 2; nn <= n; nn++) {
mpz_mul_ui(rop, rop, nn);
}
}
0148デフォルトの名無しさんNGNG
#include <stdio.h>

#define maxof3(x,y,z) maxof((x), maxof((y), (z)))
#define maxof(x,y) (((x) > (y)) ? (x) : (y))

#define minof3(x,y,z) minof((x), minof((y), (z)))
#define minof(x,y) (((x) < (y)) ? (x) : (y))

int main()
{
    int a, b, c;

    printf("Input(a,b,c)=");
    scanf("%d,%d,%d", &a, &b, &c);

    printf("結果: ");
    if (a == b && b == c) {
        puts("全てが等しい");
        printf("値: %d\n", a);
    } else {
        puts((a==b || b==c || c==a) ? "2つが等しい" : "全てが等しくない");
        printf("最大値: %d\n最小値: %d\n",
            maxof3(a, b, c), minof3(a, b, c));
    }

    return 0;
}
0149デフォルトの名無しさんNGNG
d=(a==b)+(b==c)+(a==c);

dが3なら全て等しい。1ならふたつが等しい。0なら全て異なる。
0150デフォルトの名無しさんNGNG
>>138
#include <stdio.h>

int main(void)
{
int i;
int x = 0;
int y = 0;

for(i = 1; i <= 9; i+=2)
x = x + i;
for(i = 2; i <= 10; i+=2)
y = y + i;

printf("奇数の和 = %d\n", x);
printf("偶数の和 = %d\n", y);

return(0);
}
0151148NGNG
>>149

(・∀・)エレガントイイ!!
0152デフォルトの名無しさんNGNG
for(j=k=0,i=11;--i;)*(i&1?&j:&k)+=i;
0153デフォルトの名無しさんNGNG
>>149 を見て C の == が Kronecker delta であることに初めて気付いた。
0154デフォルトの名無しさんNGNG
input ファイルの i 行目を output.i というファイルに
書き出すプログラムを書け。

お願いします。
0155デフォルトの名無しさんNGNG
>>154
fopen/fcloseとfgetsとforループがわかればできます。
0156デフォルトの名無しさんNGNG
追加。あとfputs。
0157154NGNG
>>155==156
1行あたりが、くそ長くて、メモリの確保が出来ないのですが…
0158デフォルトの名無しさんNGNG
ならgetcとputcで
0159154NGNG
157 は私じゃないですが・・・。
書き出すファイル名に outputi (i は行番号)とするのが
分かりません。
「int 型を char 型にして "output" の末尾に付ける」
これってどうすれば・・・?
型落ちは防げるものですか?
0160デフォルトの名無しさんNGNG
>>153
その解釈はなんか微妙じゃねーか!?
分からんでもないんだけど・・・ぅぅぅ、なんか気持ち悪い。
0161デフォルトの名無しさんNGNG
>>159
sprintf
0162デフォルトの名無しさんNGNG
上から「☆」←この文字が落ちてくるみたいに表現したいんですけど、
標準Cでできますか?
0163デフォルトの名無しさんNGNG
>> 159
int lineno; /* 行数 */
char output_i[MAX_PATH]; /* 出力ファイル名称 */
sprintf(output_i, "output.%d", lineno)
です。
linenoが123ならばoutput.123になります。

>> 157
メモリの確保ができないとは。行の最大長はどれくらいですか?
1024もあれば十分じゃあないのですか?それともメガ単位?
最大長がわかればfgetsでデータを読み取るバッファを
�@内部変数でとる
�A外部変数でとる
�Bmallocする
最大長がわからないとき、fstatでファイルサイズを知りそのファイルサイズ
でmallocする。

これがだめなら158さんのおっしゃるとうりfgetcとfputcで。
0164デフォルトの名無しさんNGNG
保守
by 162
0165デフォルトの名無しさんNGNG
>>162
出力方法に依存する。
大抵の文字端末では何らかのエスケープシーケンスを出力することで実現できる。
0166154NGNG
>>163
ギガ単位です。
malloc()しても、ヌルポしか返ってきません
やはり、地道にfgetc()とfputc()を使うしか無いのでしょうか?
0167デフォルトの名無しさんNGNG
モニタを上下逆に置く
0168デフォルトの名無しさんNGNG
>>166
fgetsで\nがあるかどうかで行数を数えればいいだけでは?
0169デフォルトの名無しさんNGNG
発想を変えて、モニタを落すプログラムを作ってみては?
0170デフォルトの名無しさんNGNG
>>166
行の最大長がギガ!!
0171デフォルトの名無しさんNGNG
>>168
でも、それなら、fread()の方がましな気が…
0172デフォルトの名無しさんNGNG
>>160
例えばこんなのかな。確かに気持ち悪いなw

void
set_unit_matrix(int dim, int **x)
{
int i,j;
for (i = 0; i < dim; i++) for (j = 0; j < dim; j++) x[i][j] = (i == j);
}
0173デフォルトの名無しさんNGNG
>>154
もっと詳しく仕様を書け。
0174デフォルトの名無しさんNGNG
0以上1未満の小数が与えられた時、その二進表現の文字列を返す 関数を定義し、その動作を確認しなさい。

お願いします
0175デフォルトの名無しさんNGNG
何桁まで?
あと文字列の確保は?
0176デフォルトの名無しさんNGNG
何桁って・・・double型のビット数でいいと思うが。
0177176NGNG
ごめん。doubleの変数のビットパターンを返すわけじゃないね。
0178176NGNG
循環小数なら無限だもんなぁ。
0179デフォルトの名無しさんNGNG
>>174
#include <stdio.h>
#include <float.h>
char *dtob(double x, char *s)
{
int i = 0;
if (x < 0 || x >= 1) return 0;
s[i++] = '0'; s[i++] = '.';
while (x > 0) if ((x *= 2) < 1) s[i++] = '0'; else { x -= 1; s[i++] = '1'; }
s[i] = '\0';
return s;
}

int main()
{
double x;
char buf[-DBL_MIN_EXP+5]; /* maybe wrong */
while(!feof(stdin)) if (scanf("%lf", &x) == 1) if (dtob(x, buf)) puts(buf);
return 0;
}
0180デフォルトの名無しさんNGNG
>>162
#include <stdio.h>
#include <time.h>
#define DOS_TATE_SIZE 25
int main(void)
{
int i,n;clock_t t;
for(i=0;i<DOS_TATE_SIZE-1;i++)//星を出力する回数
{
for(n=0;n<DOS_TATE_SIZE;n++)puts("");//画面クリア
puts("☆");//星を表示 カーソルは一番下にある
for(n=0;n<DOS_TATE_SIZE-i-2;n++)puts("");//改行の回数が多いほど星が上に表示される
t=clock()/CLOCKS_PER_SEC;//待つために使用
for(;clock()/CLOCKS_PER_SEC-t<=1;){}//1秒待つ
}
return 0;
}
0181専門学校生NGNG
宿題やってくれて、ありがとうございます。
今年から専門学校にはいりました。
0182デフォルトの名無しさんNGNG
>>181
ちょっとまてそれくらい自分で解け!!!
 入門へんではないか!!これからがたいへんだぞ!!
0183デフォルトの名無しさんNGNG
なんか昔のベーシックみたいだな。
0184174NGNG
ありがとうございます。
助かりました
0185デフォルトの名無しさんNGNG
>> 154, 166
ギガ単位!これって宿題じゃあなくて仕事?
fgetcとfputcを使って地道にやってください。
fread, fwriteを使ってもあまり速度は変わらないと思います。
fgetcとfputcは中でバッファリングしてるので。
0186デフォルトの名無しさんNGNG
これにコメントつけれって言われたんですが、、、
何がしてーのかサパーソなんでつ
助けてくだちい

#include <stdio.h>
#define INDEX 1000

main()
{
int i,j,flag,tmp,pnum[INDEX]={2,3};

for(i=4,tmp=2;tmp<INDEX;i++){
for(j=0,flag=0;pnum[j]<i,pnum[j];j++){
if(!(i%pnum[j])){
flag=1;
break;
}
}
if(!flag)pnum[tmp++]=i;
}

for(i=0,j=1;pnum[i]<=INDEX;i++,j++){
printf("%d",pnum[i]);
if(j==10){
printf("\n");j=0;
}else{
printf("\t");
}
}
return 0;
}
0187デフォルトの名無しさんNGNG
>>185
移植性を考えるんならそれがいいだろうけど、
実用性を目指すならメモリにあわせて read みたいなシステムコールで
一度にたっぷり読んだ方が早いと思われ。
もっとも、一行の平均長が短いのならファイル作成で時間がかかるから、
stdio で十分かと。典型的なデータがあるなら測定して決めないといかんだろう。
宿題ならコードの簡潔さも加味して fgetc/fputc が良いかと。
0188デフォルトの名無しさんNGNG
google: エラトステネスの篩
0189186NGNG
>>188
レスサソクス
しかし、コレにコメント付けれつー宿題なんでつ
結果は解ってるしエラトステネスの篩も知ってるんでつが
アフォな香具師がこれにコメントつけれとかぬかしたもんでほとほと鬱なんでつ
つーか、マンドクセー
0190デフォルトの名無しさんNGNG
>>186
int i,j,flag,tmp,pnum[INDEX]={2,3}; /* pnum[] は素数を要素とする配列 */

for(i=4,tmp=2;tmp<INDEX;i++){ /* INDEX個の素数が見つかるまで */
for(j=0,flag=0;pnum[j]<i,pnum[j];j++){ /* i 未満の素数 pnum[j] のいずれかで */
if(!(i%pnum[j])){ /* i が割り切れれば */
flag=1; /* i は合成数である */
break; /* i についてはもう調べなくて良い */

if(!flag)pnum[tmp++]=i; /* 合成数でなければ i を tmp 番目の素数として登録 */

for(i=0,j=1;pnum[i]<=INDEX;i++,j++){ /* INDEX以下の素数 pnum[i] について */
printf("%d",pnum[i]); /* 表示し */
if(j==10){ /* 10個出力する毎に */
printf("\n");j=0; /* 改行を出力 */
}else{ /* 各10個目以外は */
printf("\t"); /* 水平タブを出力 */
0191186NGNG
>>190
ありが�dございますた
このコメント(・∀・)イイ!!
勉強になりますたm(_ _)m
0192デフォルトの名無しさんNGNG
>>186
/* int main( void ) ; */
/* 小さい方からINDEX個の素数を、stdoutに表示する関数 */
/* 引数なし、返り値=必ず0、失敗した場合の考慮なし */
main() …
0193デフォルトの名無しさんNGNG
> /* 小さい方からINDEX個の素数を、

違うよ。
0194デフォルトの名無しさんNGNG
>>186
これだとINDEX個の素数は求めて配列に格納するけど
表示するのはINDEX以下の素数じゃね?
0195デフォルトの名無しさんNGNG
コメントつけろって言ってるのに
つまらない揚げ足をとるアフォがいるスレはここですか?
0196デフォルトの名無しさんNGNG
素数計算して表示してない分はちょっと勿体無いな
0197デフォルトの名無しさんNGNG
まぁ、1000以下の素数が何個有るかなんてわからんからな
どうあがいても1000個はねーだろって事ジャネーノ
0198デフォルトの名無しさんNGNG
>>194 >>196
INDEXがあまり大きくなければ、
INDEX以下の素数をすべて表示するのにはINDEXまでの素数を求めるのが速い。
素数定理に基づく経験則を使えばもう少し減らせる。
0199軟式globeNGNG
>>195
そうだよアフォだよ
0200194NGNG
>>198
それは大体わかるんだが
どのくらいが分かれ目になるんだ?
0201デフォルトの名無しさんNGNG
間違えた、
>>198
- INDEX以下の素数をすべて表示するのにはINDEXまでの素数を求めるのが速い。
+ INDEX以下の素数をすべて表示するのにはINDEX個の素数を求めるのが速い。

>>200
かなり大きいと思うよ。少なくとも10桁以上じゃないかね。
0202デフォルトの名無しさんNGNG
>>201
何を根拠にデタラメな事を…
0203デフォルトの名無しさんNGNG
>>202
実際どれくらいなのさー
0204デフォルトの名無しさんNGNG
>>203
存在含めて>>198全てがデタラメさー
だからどれくらいも何もないさー
0205デフォルトの名無しさんNGNG
というか、上限が決まって列挙で、素数を余分に生成しない方法が
余分に生成するより速いことはないんじゃないかな。
0206デフォルトの名無しさんNGNG
>>205
えっ!?
0207デフォルトの名無しさんNGNG
だれかこれやってください
どうアプローチしたら良いかすらわからん
http://www.kitnet.jp/icpc/j/kakomondai/Kanazawa-yosen-problems/D.htm
0208デフォルトの名無しさんNGNG
次の問題をお願いします。まだcを初めて3ヶ月の初心者なので、
制御文、繰り返し、ポインタ、配列、そして今回の関数ぐらいまでしかやってません。
なのでなるべく簡単なプログラムでお願いします。

整数型変数a,b,c,dにそれぞれ値を与えて、この4つをa<=b<=c<=d
の順番に並べる関数sort4(&a,&b,&c,&d)を書きなさい。
結果は、main関数内で a,b,c,dの順で出力すること。
0209デフォルトの名無しさんNGNG
>>208
宿題の文は丸写ししましょう。
あなたの勝手な(勘違いが多分に含まれた)意味不明な問題を書かれても困ります。
0210デフォルトの名無しさんNGNG
最近は宿題丸投げが推奨なのか…
自分なりに噛み砕いて分からない所を聞くんだと思ってたが
# 説明ベタは別問題
0211デフォルトの名無しさんNGNG
>>207
英語読むのあまり自信ないんで確認。
こんな解釈であってるか?

1) 数の桁数とヒントの数を入力。ともに0 0なら終了
2) ヒントを指定した数の分だけ入力。ヒントは、数、hitの数、blowの数
3) ヒントから推測できる数を出力。推測できなかったらNOを出力
4) 1) に戻る
0212208NGNG
>>209
今も一度確かめましたが、問題は丸写ししました。
自分でも問題の意味からいまいち分からなかったのですが・・・。
0213デフォルトの名無しさんNGNG
#define swapif(a,b) if(a>=b){ a^=b^=a^=b;}

void sort4(int* a, int* b, int* c, int* d)
{
swapif(*a,*b);
swapif(*a,*c);
swapif(*a,*d); // aが一番小さい数になる
swapif(*b,*c);
swapif(*b,*d); // bが次に小さい数になる
swapif(*c,*d); // ってな感じでソート完了
}

ifとか書いてくのめんどくさかったから、マクロにしちゃった。
こりゃネタにしかならんかな?
0214デフォルトの名無しさんNGNG
>>213
>>208にも書きましたが、何せ初心者なのでdefineとか書かれても分かりません。
あとmainの部分は・・・。省略ですか?
0215デフォルトの名無しさんNGNG
宿題よろしくお願いしますm(_ _)m
mainプログラムから12個のデータ a[0],a[1],…a[11]を配列で受け取り
その平均値mからの偏差 a[i] - m(i=0,1,2,…,11)
を配列として計算する関数を作れ。熊谷の平均気温は1月から12月までそれぞれ
3.2, 3.9, 7.0, 12.9, 17.7, 21.1, 24.6, 26.2, 21.9, 16.0, 10.6, 5.6(度)
である。その関数を利用して各月の気温の偏差を書き出すmainプログラムも作れ
です。改めてお願いします…
0216デフォルトの名無しさんNGNG
>>213
http://www.st.rim.or.jp/~phinloda/cqa/cqa8.html
Q 【XORのトリック】
0217デフォルトの名無しさんNGNG
変数Aに任意の正の値をいれて、その1の桁を四捨五入して表示するプログラム。

ヨロシクお願いします。
0218デフォルトの名無しさんNGNG
>>214
mainは a, b, c, d の数値代入と表示だけだろ
0219デフォルトの名無しさんNGNG
>>217
A=((A+5)/10)*10;
0220デフォルトの名無しさんNGNG
>>208
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void sort4(int*a,int*b,int*c,int*d)
{
int i,n,num[4],minNum[4]={32767,32767,32767,32767},used[4]={0},check=-1;
num[0]=*a;num[1]=*b;num[2]=*c;num[3]=*d;
for(i=0;i<4;i++)
{
check=-1;
for(n=0;n<4;n++)
{
if(minNum[i]>=num[n]&&used[n]==0)
{minNum[i]=num[n];check=n;}
}
if(check!=-1)used[check]=1;
}
*a=minNum[0];*b=minNum[1];*c=minNum[2];*d=minNum[3];
}
int main(void)
{
int a,b,c,d;srand(time(NULL));
a=rand();b=rand();c=rand();d=rand();
printf("a==%5d b==%5d c==%5d d==%5d\n",a,b,c,d);
puts("ソート↓");sort4(&a,&b,&c,&d);
printf("a==%5d b==%5d c==%5d d==%5d\n",a,b,c,d);
return 0;
}
0221デフォルトの名無しさんNGNG
あらら。よさげのが>>213に出てた。
0222デフォルトの名無しさんNGNG
>>208
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void swap(int *a,int *b){int tmp=*a;*a=*b;*b=tmp;}
void r_sort(int **p, int *end){
int **x;
if(*p==end) return;
for(x=p+1;*x!=end;++x)
if(**(x-1)>**x) swap(*(x-1),*x);
r_sort(p,*(x-1));
}

void sort4(int *a,int *b,int *c,int *d){
int *p[] = {a,b,c,d,NULL};
r_sort(p,NULL);
}

main(){
int a,b,c,d;
srand(time(NULL));
a=rand();b=rand();c=rand();d=rand();
sort4(&a,&b,&c,&d);
printf("%d %d %d %d",a,b,c,d);
}
0223217NGNG
>>219
すいません、、、
それの意味が分かりません。。。
Aに13を代入したとすると、、、
((13+5)/10)*10=18になりますよね??
どういう意味なのでしょう。。。
0224デフォルトの名無しさんNGNG
>>223
やってみてから文句言え
0225デフォルトの名無しさんNGNG
このほうが綺麗か。

void r_sort(int **p, int **end){
int **x;
if(p==end) return;
for(x=p+1;x!=end;++x)
if(**(x-1)>**x) swap(*(x-1),*x);
r_sort(p,x-1);
}

void sort4(int *a,int *b,int *c,int *d){
int *p[] = {a,b,c,d};
r_sort(p,p+sizeof(*p));
}
0226デフォルトの名無しさんNGNG
>>214
関数内の swapif(*x,*y); を全部
if(*x >= *y){ int tmp=*x; *x=*y; *y=tmp;}  みたいに書き直せばいいよ。
0227デフォルトの名無しさんNGNG
>>207
いっそのこと全探索してしまうとか。
最大でも 10! = 3628800 通りだし、なんとかなりそうな気も……。
0228デフォルトの名無しさんNGNG
int a=12を10で割ると1
それに10掛けると10
0229デフォルトの名無しさんNGNG
>>223
もしAがdoubleであれば
A = floor((A + 5) / 10) * 10;
0230217NGNG
>>228
なるほど!!!
少数以下は勝手に削られるってことですか??
>>229
doubleってなんでしょう。。。
0231デフォルトの名無しさんNGNG
doubleは実数intは整数だ
0232デフォルトの名無しさんNGNG
>>215 中卒にはこたえた。標準偏差というのが分からなくて。あってるかな?
#include <stdio.h>
#include <math.h>
void MakeHensa(const double a[12],double hensa[12])
{
int i;
double n,m,l,hzh;
for(i=0,n=0;i<12;i++)n+=a[i];
m=n/12;
for(i=0,n=0;i<12;i++)n+=pow(a[i],2);
n/=12;
for(i=0,l=0;i<12;i++)l+=a[i];
l/=12;l=pow(l,2);
hzh=sqrt(n-l);
for(i=0;i<12;i++)hensa[i]=(a[i]-m)/hzh*10+50;
}
int main(void)
{
int i;
double ondo[12]={3.2,3.9,7.0,12.9,17.7,21.1,24.6,26.2,21.9,16.0,10.6,5.6},hensa[12];
MakeHensa(ondo,hensa);
for(i=0;i<12;i++)printf("%2d月:%4.1f℃(%4.1f)\n",i+1,ondo[i],hensa[i]);
return 0;
}
0233217NGNG
>>231
なるほど。。。
ありがとうございます。

ちょっと作ってみたんですけど、家のパソコンではなぜかコンパイル出来ないんで合ってるか分かりませんが、、、

どうでしょう??

#include <stdio.h>
main(){
int a;

printf("正の値を打ち込んでください。");
scanf("%d",&a);
a=((a+5)/10)*10;
printf("一の位を四捨五入してみました。%f \n",a);

return 0 ;
}
0234デフォルトの名無しさんNGNG
>>215
#include <stdio.h>
void hensa(double * ans, const double * data)
{
  int i;
  double ave=0;
  for(i=0; i<12; i++) ave += data[i];
  ave /= 12; //これが平均値
  for(i=0; i<12; i++) ans[i] = data[i]-ave; //偏差を計算
}
int main()
{
  int i;
  double a[12]={3.2, 3.9, 7.0,12.9,17.7, 21.1, 24.6, 26.2,21.9, 16.0, 10.6, 5.6};
  double b[12]; //偏差を格納するための配列
  hensa(b,a);
  for(i=0; i<12; i++) printf("%3.3f ",b[i]);
  printf("\n");
  return 0;
}

>>232 この問題って多分標準偏差じゃなくてただの差じゃねぇか?
0235デフォルトの名無しさんNGNG
>>233
何をしたいんだ?

printf("一の位を四捨五入してみました。%d \n",a);

じゃねーの?
0236デフォルトの名無しさんNGNG
>>234
だろうな
0237デフォルトの名無しさんNGNG
>>234
そうか。それならもう少し易しかったのに。でも、偏差値の求め方を
勉強する機会なんてそう無いと思うから、良かったかな。
0238233NGNG
>>235
dとfの違いすら分かりません・・・T_T
大学の授業は男しか居なくて仲良しができなくて・・・。
yahooで調べてみてもそんな簡単なことのってませんでしたT_T

あの、それをdにしたら平気なんでしょうか??
0239デフォルトの名無しさんNGNG
Cの参考書とかねーの?
printfのとこみりゃのってんだろ。
0240デフォルトの名無しさんNGNG
>>238
うん
あとネットでprintfしらべるよろし
0241233NGNG
あ・・・printfで調べるんですか!!
分かりました。早速調べます〜!
ありがとうございました!!
0242デフォルトの名無しさんNGNG
%dはint、%fはdouble
0243デフォルトの名無しさんNGNG
flootもな
0244デフォルトの名無しさんNGNG
float
0245デフォルトの名無しさんNGNG
みんなやさしくなっちゃった
0246デフォルトの名無しさんNGNG
よーしパパもfloot調べちゃうぞ
0247デフォルトの名無しさんNGNG
floot ... ぷっ
0248デフォルトの名無しさんNGNG
フルート
0249デフォルトの名無しさんNGNG
話の流れからいってfloorの打ち間違いだと思うが…
0250デフォルトの名無しさんNGNG
馬鹿ばっかり
0251デフォルトの名無しさんNGNG
>>249
おまえが一番話の流れを読めてないぞ。
0252デフォルトの名無しさんNGNG
私のために争うのはやめて!!
0253デフォルトの名無しさんNGNG
>>252
安らかに眠れ。
0254233NGNG
いやーみんなのおかげですごく助かりました!!!
ほんとありがとうございました。笑顔
0255デフォルトの名無しさんNGNG
>>198-206
INDEX以下の素数を求めるにはINDEX以下の素数を求めれば良い
つーか、INDEX以下の素数を求めるのに
INDEX個の素数を求めた方が速いと言う事はありえない
求め方が分からない香具師は「素数 "列挙" アルゴリズムを極めるスレ」でも読め
http://pc2.2ch.net/test/read.cgi/tech/1018657457/
0256デフォルトの名無しさんNGNG
何を今更
0257デフォルトの名無しさんNGNG
>>256
そこは、「キリ番ゲッツ!!」って言わないと
0258デフォルトの名無しさんNGNG
randは種を変えないと同じ数を返すんだが・・・。
clock()は差を取らないとダメなんじゃない?
0259デフォルトの名無しさんNGNG
>>256
まあ、これは最初に提示されたソースが無駄なことをしている、ってことで。
それにエラトステネスのふるいではないし...。
0260デフォルトの名無しさんNGNG
この問題が解けません・・・

1000以下の完全数を全て求めて表示するプログラムを書け。完全数とは、
約数(1とその数自身を含む)の和がその数の2倍に等しい数である。

0261デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void){
int x,wa,y;
wa=0;

for(x=0;0<=x && x<=1000;x=x+1){

for(y=1;0<=y && y<=x;y=y+1)

{
if(x%y==0)
wa=wa+y;
}
if(x*2==wa)
printf("kanzensuu:%d",wa);


return(0);}
}

0262デフォルトの名無しさんNGNG
と作ってみたのですが上手く回ってないです・・・
0263デフォルトの名無しさんNGNG
waをいつ初期化すればよいか考えろ
0264デフォルトの名無しさんNGNG
>>263
サンクスです。
単純なことに気づかない漏れは・・・
0265デフォルトの名無しさんNGNG
次は友愛数を求める宿題だな
0266デフォルトの名無しさんNGNG
質問しまつです。
スタックを用いて引き算をする際、
x = pop();
push(pop() - x);
としますよね。これはいいんですが、
push(-pop() + pop());
ではダメだと言われてしまいました。自分にはこの二つの違いがわかりません・・・。
どなかたご教授くださればありがたいです。
0267デフォルトの名無しさんNGNG
>>266
式の評価順でしょう。-pop() が実行された後に pop() が実行される場合もあるし、
pop() が実行された後に -pop() が実行されることもある。評価順によって結果は異なりますよね?
0268デフォルトの名無しさんNGNG
>>267
なるほど!
どっちから実行されるかはその場合によって変わる事があるんですね。
勉強になりました!!
これでレポートが書けます・・・。本当に感謝です。ありがとうございました。
0269デフォルトの名無しさんNGNG
初歩的な質問なのですが
#include <stdio.h>
main()
{
int i,j;
j=10;
for (i=9; i>0 ;i--){
j=j*i;
}
printf ("%d\n",j);
}

前回の課題内容であるN!の階乗計算プログラムに対し、階乗計算の部分を関数化せよ。但し、次の条件に従うこと。
・関数名はfactorialとすること
・int型の変数を関数の引数として受け取り、その引数に従って関数内部で階乗計算を行うこと
・階乗の計算結果を関数の返値とすること
・main文でfactorialを呼び出した後、結果をprintf文で画面表示すること
なんですが関数のところでの変数宣言がイマイチわかりません。
どなたか教えてください。
0270269NGNG
前回の課題っていうのが最初に書いたソースです
0271デフォルトの名無しさんNGNG
#include <stdio.h>
long int factorial(long int N)
{
long int i=N-1;
for(; i>1; i--){
N=N*i;
}
return N;
}
int main()
{
long int N=10; //intならN=10ですでにオーバーフローするぞ
N=factorial(N);
printf("N!=%ld\n",N);
return 0;
}
0272デフォルトの名無しさんNGNG
>>271
>int型の変数を関数の引数として受け取り
問題文を良く読め
つーか、intが2バイトってネタは、もう飽きた
0273デフォルトの名無しさんNGNG
>>266
分かった!・・・・・・・・・・・・・・・・・・・・・・・・・・かもしれない。
俺も最初同じだろって思ったtが、多分こういうことなんじゃないの?

x = pop();
push(pop() - x);
の場合、スタックの一番上の値から次の値が引かれる。

一方、
push(-pop() - pop());
の場合、前半の-pop()が先に呼ばれるか、後半の+pop()が呼ばれるかは
どうなるか分からないので、どちらからどちらが引かれるかは予想できない。
(俺が知らんだけで、ANSI Cとかで前から後ろと保証されているかもしれんがなぁ)

だからきっと、266にだめといった人は、関数呼び出しの順番が明確でないと
言いたかったのでは?
もし、266がそこまで考慮して後者の書き方をしたのなら
あんたの方が一枚上手だったということで。

で、俺の環境(XP+VC6)でテストしたところコンパイルオプションによって値が変わった。
具体的に言うと、通常のコンパイルだとうまく動いたが、最適化してコンパイルすると
値が正負逆になっておかしくなった。



0274273NGNG
    _, ._
  ( ゚ Д゚)
  ( つ旦O
  と_)_)

    _, ._
  ( ゚ Д゚)   ガシャ
  ( つ O. __
  と_)_) (__()、;.o:。
          ゚*・:.。

とっくに書かれてた・・・

0275デフォルトの名無しさんNGNG
>>268
こことか読んでみるとよろし
http://www.catnet.ne.jp/kouno/c_faq/c3.html#4
0276デフォルトの名無しさんNGNG
>>273-274
長文乙彼
でも、評価順は良くあるネタだから
それくらいは、憶えておいて、一瞬で見抜かないとね…
0277272NGNG
最近16bitマイコンさわってたからなんか勘違いした。わりい。
この場合大抵intでいけるな。
0278デフォルトの名無しさんNGNG
>>277
何つーか…まぁいいや
0279273NGNG
>>276
了解っス。
さらに精進してきまつ。

0280デフォルトの名無しさんNGNG
//>>215
//もう古い話題だが、こういう問題出す教師には次の回答で復讐

int a,b,c,d;//ソートする対象

void sort4(int *aa,int *bb,int *cc,int *dd){
int a=*aa,b=*bb,c=*cc,d=*dd;
#define sorted(a,b,c,d) (((a)<=(b))&&((b)<=(c))&&((c)<=(d)))
#define store(aaa,bbb,ccc,ddd) {*aa=aaa,*bb=bbb,*cc=ccc,*dd=ddd;return;}
#define dosort(aaa,bbb,ccc,ddd) if(sorted(aaa,bbb,ccc,ddd))store(aaa,bbb,ccc,ddd)
 dosort(a,b,c,d);dosort(a,b,d,c);dosort(a,c,b,d);dosort(a,c,d,b);
 dosort(a,d,b,c);dosort(a,d,c,b);dosort(b,a,c,d);dosort(b,a,d,c);
 dosort(b,c,a,d);dosort(b,c,d,a);dosort(b,d,a,c);dosort(b,d,c,a);
 dosort(c,a,b,d);dosort(c,a,d,b);dosort(c,b,a,d);dosort(c,b,d,a);
 dosort(c,d,a,b);dosort(c,d,b,a);dosort(d,a,b,c);dosort(d,a,c,b);
 dosort(d,b,a,c);dosort(d,b,c,a);dosort(d,c,a,b);dosort(d,c,b,a);
}
#define p(a,b,c,d) printf("%i %i %i %i\n",a,b,c,d);
int main(){
 a=110;b=291;c=3431;d=43;//本当はscanf等で読み取るのが良い。
 p(a,b,c,d);
 sort4(&a,&b,&c,&d);
 p(a,b,c,d);
 return 0;
}
0281デフォルトの名無しさんNGNG
age
0282デフォルトの名無しさんNGNG
>>207>>211
暇だったので作りました。よく問題が分からなかったのですが、hit,browと
書いてあったのでそれっぽく。その問題の解答としては正しいかは分かりませんが。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=73
0283デフォルトの名無しさんNGNG
>>280
は>>208へのレスだな?
0284デフォルトの名無しさんNGNG
コードブレーカー?
0285デフォルトの名無しさんNGNG
for while do{}while等を使わないでコードを書くことはハードウェア化
する上で重要な手段。>>280のコードはハードウェア化するとquick sortより
早いだろうね。
0286デフォルトの名無しさんNGNG
ttp://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/h/huffman.html

ここのハフマンで、どの文字がどういうビット列になったかを調べたいのですがどうしたらいいですか?
0287デフォルトの名無しさんNGNG
出来上がったハフマン木をトレースしていけば委員でないの?
0288デフォルトの名無しさんNGNG
>>286
このスレに来てるってことは実際に作ってくれって言ってんのか?
0289デフォルトの名無しさんNGNG
これで成績が決まってしまいます・・・。
どうかこの問題を解いては頂けないでしょうかm(_ _)m
学生7名の国語,数学,英語の成績のファイルindatがある。このファイルを読み込んで(6)
の形式にある形で結果をファイルresultに出力せよ。indatの内容
60 80 70 63 90 74 72
82 60 85 90 72 75 78
89 75 90 87 85 74 72
1行目から順に国語,数学,英語の成績である。
(1)1次元配列が与えられているときその総和を求める関数sumを作れ。
(2)総和で求めたsを利用して平均値を求める関数meanを作れ。
0290デフォルトの名無しさんNGNG
(3)偏差を求める関数hensaを作れ
(4)標準偏差を求めるsigmaを作れ
(5)データxとデータyの標準偏差をσx,σyとしたとき,相関係数を求めるsokanを作れ。
それを使って英語と数学の相関係数を求めよ。
ただし,計算式は(3)のhensa-x,hensa-yを用いると
相関係数=((hensa-x)(hensa-y))/(σx*σy)の二乗根
(6)resultファイルの出力形式
No. Jap Math Eng sum
1 60 82 89 ○
2 80 60 75 ○
・・・
7 72 78 72 ○
mean yy.y yy.y yy.y zzz.z
sigma yy.y yy.y yy.y
sokan=xx.xxxxxx
↑のような形で
お助けください…
0291211NGNG
>>282
私にふられても問題解釈に自信のない口なんで…
今のところ私の方は >>208 さんがレスくれんからまだ作り始めてもない。
0292デフォルトの名無しさんNGNG
>>282
問題を出すプログラムではなく、問題を解くプログラムを作らなくてはならない
のです。
4 6
7360 0 2
2507 0 1
9713 1 1
9678 2 2
0 0
というテキストを読み込んで、
9876
と出力させます。
一旦すべての可能性を記憶しておいて、条件にあわないものを間引いていく
方法が考えられますが、うーん...。
0293デフォルトの名無しさんNGNG
>>282
つまり、読み込んだヒントをもとに適合する数値を探せという問題だ。
全数探査は簡単だが10桁にもなると大変な計算量になるし、
適切に推論しようとすると論理処理をコーディングするのが面倒くさい。
このバランスが鍵だね。
宿題にしてはちょっとしたプログラムになるな。
0294211NGNG
208さんではなく、>>207さんでしたね

hit and blowで数を推測するプログラムは昔組んだことある。
そのときは、10×Lの配列にヒントから得られる確率を足していくという手段を
とったんだけど、えらい面倒臭かった。
一応は動いたんだけど、どこか勘違いがあるらしく確率の総和が
一定にならないときがあった。
0295289NGNG
提出時間が18時なんで
どうかよろしくお願いしますm(_ _)m
0296デフォルトの名無しさんNGNG
タイムリミットまであと30分。
だれかたすけてあげて!!!!!
0297デフォルトの名無しさんNGNG
相関係数の式が間違ってないか?
それから一番最後の相関係数は何と何の相関係数なんだ?
0298デフォルトの名無しさんNGNG
>1 60 82 89 ○
この○はギャグかなんか?
0299デフォルトの名無しさんNGNG
○のところはsumで求まる部分じゃん?英語と数学が相関関数て書いてあります。
0300デフォルトの名無しさんNGNG
>>289
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=103&fi=no

適当
0301デフォルトの名無しさんNGNG
itoaの中身を教えてくださいm(__)m

atoiで二進数からいじるやり方は分かったんだけど逆がどうしても・・・。

おねがいします〜。
0302_NGNG
http://homepage.mac.com/hiroyuki44/2ch.html
0303デフォルトの名無しさんNGNG
itoa.cでぐぐれよ、、
0304289NGNG
>>300
素早い対応ありがとうございましたm(_ _)m
今日の24時まで提出に延びたのですが
>>300さんのやつだと7人各々の3教科合計が表示されませんでした。
試行錯誤してみたんですが良い方法ありませんでしょうか?
0305デフォルトの名無しさんNGNG
atoiでどうやって二進数からいじるんだよ。strtolならまだしも
0306デフォルトの名無しさんNGNG
>>304
main()の
for(i=0;i<n;i++) fprintf(dp,"%d %2.0lf %2.0lf %2.0lf ○\n",i,
japanese[i],math[i],english[i],japanese[i]+math[i]+english[i]);
の部分の「○」を%3.0lfにする。
0307282NGNG
>>292
そういう問題でしたか。どこの宿題です?工業大学とかかな。
作ってみたいですが、めんどくさいです。>>294さんやってあげてください。
0308デフォルトの名無しさんNGNG
2次元配列の問題ですが、斜め掛けのやり方がどうしても分かりません。
どなたか解いていただけないでしょうか?
ちなみにC言語です。宜しくお願い致します。

【問題】ttp://nekomimi.ws/~asanagi/cgi-bin/ragnarok/source/20030707215657-q1.txt
【記憶のソース】ttp://nekomimi.ws/~asanagi/cgi-bin/ragnarok/source/20030707220012-hairetu.txt
0309308NGNG
記憶のソースの方に余分な変数(k,m)が含まれてました。
すみません。
0310デフォルトの名無しさんNGNG
>>308
「斜め掛け」って、な〜に?「斜め足し」の間違い?それとも別に出された課題なの?
0311308NGNG
>>310
斜め足しでした…すみません。
0312デフォルトの名無しさんNGNG
>>308
読めん
0313308NGNG
度々すみません。
ttp://r0-up.hp.infoseek.co.jp/cgi-bin/upboard/source/065.txt
ttp://r0-up.hp.infoseek.co.jp/cgi-bin/upboard/source/066.txt
0314デフォルトの名無しさんNGNG
>>308
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=74
0315デフォルトの名無しさんNGNG
>>308
もったいないから、配列は0から使おうね。

#include <stdio.h>
#define SIZE 10
int main()
{
  int a[ SIZE + 1 ][ SIZE + 1 ];
  int i, j, k;
  /* make matrix */
  for( i = 0; i < SIZE; i++ ){
    for( j = 0; j < SIZE; j++){
      a[ i ][ j ] = i * 10 + j + 1;
    }
  }
  /* add right-down line element */
  for( i = 0; i <= SIZE; i++){
    a[ i ][ SIZE ] = a[ SIZE ][ i ] = 0;
    for( j = SIZE - i, k = 0; j < SIZE; j++, k++){
      a[ i ][ SIZE ] += a[ k ][ j ];
      a[ SIZE ][ i ] += a[ j ][ k ];
    }
  }
  a[ SIZE ][ SIZE ] /= 2;
  /* print answer */
  for( i = 0; i < SIZE + 1; i++ ){
    for( j = 0; j < SIZE + 1; j++)
      printf( "%4d", a[ i ][ j ] );
    printf( "\n" );
  }
  return 0;
}
0316315NGNG
ウッ、細かい整形をしている間に先を越されてしまっていたか…。
0317308NGNG
>>314-315
有難う御座います。

配列0から使うように…もとより自己スキル磨きます。
本当に有難う御座います。
0318デフォルトの名無しさんNGNG
質問させていただきます。
Cで*.au形式の簡単な音声ファイルを作るプログラムなのですが、
出力されたauファイルが開けません。原因を追究すると
ヘッダの中のデータはbig endianで無いといけないようです。
ウチのアスロン君はlittle endianのCPUなので、これでは出力ができません。
big endian → little endianのデータ変換の仕方を教えてください(´・ω・`)

ソース
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=104
0319デフォルトの名無しさんNGNG
>>318
バイト単位で読み込んで入れかえるだけ
0320デフォルトの名無しさんNGNG
何か★の箇所にエラーが出るんですが・・・

#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
#define N 100
main(){
return 0;
}
int sigma(a,d){
int i,b[N];
double s=0;
seiki(a,d,b[]);          (★)
for(i=0; i<N; i++){
s = s + b[i];
}
return s;
}

seiki(a,d,b[]){      (★)
int i, seed, random,b[N];
seed = 2;
srand(seed);
for(i=0;i<N;i++){
random = rand()*4/randmax;
b[i]=sqrt(N/2/PI)/a/d/d*exp((-1)*random*N/2/a/a/d/d);
} }
0321デフォルトの名無しさんNGNG
エラーメッセージ嫁
0322デフォルトの名無しさんNGNG
>>319
(´・ω・`)も、もうちっと詳しくおながいできませんか
0323デフォルトの名無しさんNGNG
>>318
手元の環境で実行できないから自信ないけど、

int i;
unsigned char *p;
p = ( unsinged char* ) &hdr.hoge;
for( i = sizeof(int) ; i != 0; i-- )
  printf( "%02x", p[ i - 1 ] );

って1ヘッダ要素づつファイルに書き込んだらどうかな?
0324デフォルトの名無しさんNGNG
>>318
なんで
fp = fopen("myfile.au", "w");←ここ
バイナリでの書き込みじゃないの?
0325デフォルトの名無しさんNGNG
>>324
UNIXだから
0326デフォルトの名無しさんNGNG
そーなんだ
0327デフォルトの名無しさんNGNG
今回自由課題ということで、迷路を自動生成し、cursesによって
カーソルを動かし、迷路を解いていくゲームを作ることにしたのですが、
迷路生成とcursesによるカーソル移動は、それ単体ではきちんと動くのですが、
この二つを組み合わせるとうまいこと動いてくれません。

手元の環境は赤帽8です。みなさんよろしくおながいします。

ソース(迷路生成)http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=105
   (curses) http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=106
0328211NGNG
>>292
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=107

一応作った。
最初は確率を求める方針で作ってたんだけど、途中から枝刈りしながらの探索に切り替えた。
枝刈りはどの程度効いているか調べていない。もっとシンプルにしてもそれなりの速度はでるかも。
0329デフォルトの名無しさんNGNG
>>328
次は、ランダムで問題を作り、それに解答するプログラムだな
0330デフォルトの名無しさんNGNG
>>327
上のは何も表示されない。
下のは実行出来なかった。UNIXとかなのかな?

>>328
いきなり入力待ちみたいになってて、やり方が分からんから、適当に数値を
何回か入力してたら、いきなりエラーが発生しました、終了しない場合は
製造元になんたらと変なサウンドと共に出た。ドラクエの冒険の書が
消えた時の音みたいで、めちゃびびった。
0331デフォルトの名無しさんNGNG
これの関数の定義がちがうといわれました。
すみませんが教えて頂けないでしょうか?
≪問題≫
a0 = 0, a1=1, an+2 = an+1 + an (n は 0 以上)で定まる数列 an を
求める関数 int fibonacci(int n) を、再帰を使って作成しなさい。
動作確認をするために、20項まで出力する main 関数も作成しなさい。
この数列は、Fibonacci(フィボナッチ)数列と呼ばれ、
a2 = 1, a3 = 2, a4 = 3, a5 = 5, a6 = 8, a7 = 13, ・・・となる。
実行例
   Fibonacci(0) = 0
   Fibonacci(1) = 1
   Fibonacci(2) = 1
        :
        :
   Fibonacci(19) = 4181
   Fibonacci(20) = 6765
0332331NGNG

#include <stdio.h>
int fibonacci(int n) {
if (n == 0) return 0;
else if (n == 1) return 1;
else return fibonacci(n - 1) + fibonacci(n - 2);
}
int main(void) {
printf("%d\n", fibonacci(20));
return 0;
}
0333デフォルトの名無しさんNGNG
あともう一つお願いします。

標準入力からの入力に現れたアルファベット小文字をカウントする
プログラムを作成しなさい。アルファベットは、a から z まで
連続した値を取るとして処理して構いません。

実行例:(下線部分は実行時に入力するか、ファイルから読み込む)
   As I have explained earlier, using XDMCP to display
   X across Internet is basically a no-no
   Ctrl + Z
   アルファベット小文字の出現回数

   'a':8 'b':1 'c':2 'd':2 'e':7 'f':0
   'g':1 'h':1 'i':6 'j':0 'k':0 'l':5
   'm':0 'n':6 'o':4 'p':2 'q':0 'r':4
   's':7 't':3 'u':1 'v':1 'w':0 'x':1
   'y':2 'z':0
0334デフォルトの名無しさんNGNG
A+B=C,D+E=F,A+D=G,B+E=Hを満たすA〜Hの値をそれぞれ求めよ。
ただしA〜Hは1から8までの数字である。

これ、わっかるかなぁ〜?
0335デフォルトの名無しさんNGNG
わっかんね〜だろ〜な〜
0336デフォルトの名無しさんNGNG
>>333
Ctrl+zって何?改行と違うの?
>>334
それ、わっからない〜
0337デフォルトの名無しさんNGNG
>>333
#include <stdio.h>
#include <stdlib.h>

int main(){
int count[0x80]={0};
int i;
while( (i=getc(stdin))!=EOF ){
if(i>=0x80){ // ASCII文字以外破棄
i=getc(stdin);
if(i==EOF) break;
continue;
}
count[i]++;
}
for(i='a';i<='z';i++){
printf("%c:%d\n",i,count[i]);
}
return 0;
}
0338デフォルトの名無しさんNGNG
>>331
mainが違うの?
    int i;
    for(i=0; i<21; ++i)
        printf("Fibonacci(%d)=%d ",i, fibonacci(i)); 
0339デフォルトの名無しさんNGNG
>>338
20項なのに21と書くのはスマートじゃない。
0340デフォルトの名無しさんNGNG
>336
CtrlZはAsciiではSUBですが、
一部のOSではテキストファイルの終端文字として使われていたそうです。
また、一部のOSでは標準入力の打ちきりに使うそうです。
0341デフォルトの名無しさんNGNG
イテレーションだと考えれば最終要素の次の要素をウォッチドッグ
にするのはごくごく自然。
0342デフォルトの名無しさんNGNG
watchdog をタイミングに依らないところで使うの初めて見た
こういう場合は setinel っていうじゃないの?
0343デフォルトの名無しさんNGNG
>>331
int fibonacci(int n) {
return (int)(pow((1 + sqrt(5) / 2, n) / sqrt(5) +0.5);
}
0344missNGNG
int fibonacci(int n) {
return (int)(pow((1 + sqrt(5)) / 2, n) / sqrt(5) +0.5);
}
0345デフォルトの名無しさんNGNG
途中から指数関数的に誤差が拡大するのも見逃せないが、
どこまで正しいか分からないから良くない。
0346デフォルトの名無しさんNGNG
A=1 B=6 C=7 D=3 E=2 F=5 G=4 H=8
A=3 B=2 C=5 D=1 E=6 F=7 G=4 H=8
A=1 B=3 C=4 D=6 E=2 F=8 G=7 H=5
A=6 B=2 C=8 D=1 E=3 F=4 G=7 H=5
A=2 B=3 C=5 D=6 E=1 F=7 G=8 H=4
A=6 B=1 C=7 D=2 E=3 F=5 G=8 H=4
A=2 B=6 C=8 D=3 E=1 F=4 G=5 H=7
A=3 B=1 C=4 D=2 E=6 F=8 G=5 H=7
0347デフォルトの名無しさんNGNG
25個の石の山
交互に(最大三個まで)取っていき、最後の一個をとったほうが負け
自分先手
コンピューター後攻
取るごとに残りの石の数を表示

お願いします
0348デフォルトの名無しさんNGNG
>>346
プログラムは?
0349デフォルトの名無しさんNGNG
>>347
それ後攻の方が絶対勝つんじゃあ
0350デフォルトの名無しさんNGNG
>>349
それでかまいませんので
0351デフォルトの名無しさんNGNG
>>350
遠慮しとく
0352デフォルトの名無しさんNGNG
#include <stdio.h>
int
main()
{
    int s = 25, n = 3, p, c;
    printf("start: %d stones left\n", s);
    while(!feof(stdin)){
        printf("you: "); fflush(stdout);
        if (scanf("%d", &p) == 1) {
            if (p<1 || n<p) { printf("not in 1..%d. retry\n", n); continue; }
            s -= p;
            if (s == 0) { printf("you won\n"); return 0; }
            c = s%(n+1) != 0 ? s%(n+1) : 1;
            s -= c;
            printf("cpu: %d (%d stones left)\n", c, s);
            if (s == 0) { printf("you lost\n"); return 0; }
        }
    }
    printf("\nabort\n");
    return 1;
}
0353デフォルトの名無しさんNGNG
>>352
最後の一個をとったほうが負け
0354デフォルトの名無しさんNGNG
ぐは
0355デフォルトの名無しさんNGNG
○×は先行有利が鉄則。
       
      ◯│×│
      ─┼─┼─
        │◯│
      ─┼─┼─
        │  │
0356デフォルトの名無しさんNGNG
>>352
そのプログラムにはバグがあるわけだが・・・
0357デフォルトの名無しさんNGNG
>>340
なるほど。勉強になりました。ありがとう。
0358デフォルトの名無しさんNGNG
>>328はどのように動かすんですか?
0359デフォルトの名無しさんNGNG
B木にノードを挿入するinsert()を
反復構造でコーディングしてくれえ
0360211NGNG
>>358
>>207 のリンク先にあるSample Inputを入力すると
Output for the Sample Inputが出力される。
(という動作確認をしました)
0361デフォルトの名無しさんNGNG
>> 358
反復構造とは何ですか?
0362デフォルトの名無しさんNGNG
>>361
再帰構造を使わないやつです
0363デフォルトの名無しさんNGNG
みてね!
http://akipon.free-city.net/page003.html
0364デフォルトの名無しさんNGNG
>>362
結局スタック的なデータ構造がいるという・・・
0365デフォルトの名無しさんNGNG
結局リカーシブな構造になるわけね・・
0366デフォルトの名無しさんNGNG
>>360
もう少し詳しくおながいします。英語が分からないので。
何桁入力して改行、それを何回行なう、エラーはどういうときに発生するか等。

>>361
なぜたわしに聞くの?
>>362さんの言うように、同じ関数内を中心にforとかを使うのだと思います。
0367361NGNG
>> 359. 362
こんなのでどうでしょう。
struct BTree {
int data;
struct BTree *left, *right;
};

void insert(struct BTree *at, struct BTree *ins)
{
struct BTree *cur = at;
while (cur != NULL) {
struct BTree *whitch =
ins->data > cur->data? cur->right: cur->left;
if (whitch == NULL) {
whitch = ins;
break;
}
cur = whitch;
}
}
0368デフォルトの名無しさんNGNG
>>367
まず、インデントとC、C++混在記法を何とかして下さい。
0369デフォルトの名無しさんNGNG
混在?
0370361NGNG
ちょっと間違えたね。これで。
struct BTree {
  int data;
  struct BTree *left, *right;
};

void insert(struct BTree *at, struct BTree *ins)
{
  struct BTree *cur = at;
  while (cur != NULL) {
    struct BTree *whitch =
    ins->data > cur->data? cur->right: cur->left;
    if (whitch == NULL) {
      if (ins->data > cur->data) {
        cur->right = ins;
      } else {
        cur->left = ins;
      }
      break;
    }
    cur = whitch;
  }
}
0371デフォルトの名無しさんNGNG
読みづらい。
0372_NGNG
http://homepage.mac.com/hiroyuki44/hankaku09.html
0373211NGNG
>>366
6 4
160348 0 4
913286 2 3
431289 3 1
671283 3 3

これはSample Inputの最初の5行だけど、最初の行は桁数とヒント数を入力する。
桁数の後スペースを一つ入れてヒント数を入力し改行する。
残りの4行は試行する数とhit数とblow数からなるヒントを入力する。
最初の行の桁数と同じ桁の数を入力して、スペースを一つ入れ、hit数を入れ、
スペースを入れ、blow数を入れ、改行する。
同様に残りの4行を入力する。
ここまで入力するとOutput for the Sample Inputの最初の行の

637281

が出力される。
この後また桁数とヒント数を入力する状態になる。
桁数とヒント数を入力する代わりに 0 0 を入力するとプログラムが終了する。

ヒントをヒント数分入力しても、数が一つに決まらないときは NO を出力する。
0374211NGNG
入力エラーのチェックは全然入れてない。
0375361NGNG
手元にコンパイラがないから、エラーが出るかもしれない。
勘弁してくださいね。
insertの引数atは常にルートノードのアドレスということ
になります。

あと、insertする順番によっては非常に効率の悪いB木に
なりますね。
たとえば、1,2,3,4,5をこの順番でinsertするとリストに
近い構造になってしまう。
深さを優先にしてB木の構造そのものを組替えるような
insertを作ったら面白いですね。

あつ、このinsertだと最初のノードは作れないね。
その辺はよろしく。
0376デフォルトの名無しさんNGNG
>367
それ、B木っていうの?
どうみても、二分木みたいだけど。
0377デフォルトの名無しさんNGNG
>>376
BinaryTreeの略
0378デフォルトの名無しさんNGNG
>>373
書いてある通りにやったら、その通りに出来ました。
分かりやすく教えてくれて、ありがとう。
0379デフォルトの名無しさんNGNG
B-Tree じゃなくて  Binary-Tree だったりして
0380367NGNG
間違えちゃった?
B木=二進木=binary treeじゃあないの?
それともB木=balanced tree?
0381デフォルトの名無しさんNGNG
二進木っていうかな。二分木だよね。
0382デフォルトの名無しさんNGNG
>>380
後者が正解。
0383デフォルトの名無しさんNGNG
神様に聞いてみた。
http://www.google.com/search?num=50&hl=ja&lr=lang_ja&q=B%96%d8
一番目はこれ
http://www.cs.u-gakugei.ac.jp/~miyadera/LECTURE/algo2/5-2.html
0384デフォルトの名無しさんNGNG
よく勘違いされるからバ木とかにしてほすぃ
0385デフォルトの名無しさんNGNG
>>384
どっちも「バ」な訳だが。
0386デフォルトの名無しさんNGNG
平衡木
0387デフォルトの名無しさんNGNG
>>385
二(多)分木とバ木だろアホ
0388デフォルトの名無しさんNGNG
バイナリとバランスじゃねーの?
0389デフォルトの名無しさんNGNG
binary treeをバイナリ木と書くことは稀
0390367NGNG
うーん。確かにB木はBalanced treeのようだね。
失礼失礼。
でも、宿題の本質は再帰構造でなくて反復構造でということ。
Balanced treeを再帰構造で作れる人だったら、反復構造の
二進木insertのコードを見ればOKだと思うのですが。

要するに、内部でループするということです。(苦しい!)

0391デフォルトの名無しさんNGNG
全言語のページから二進木を検索しました。
約97件中...
0392デフォルトの名無しさんNGNG
丸投げいいですか?

次のベクトルaを求めるプログラムを示せ。
a=TUb
  「cos θ1 -sinθ1 0 0┐
T=|sin θ1 cosθ1  0 0|
  |0      0    1 0|
  └0      0    0 1」


  「cos θ2 -sinθ2 0 l1┐
U=|sin θ2 cosθ2  0 0|
  |0      0    1 0|
  └0      0    0 1」


  「l2┐
U=|0|
  |0|
  └1 」

手計算した後,それを出力しようとも思ったのですがいくらなんでもまずいかなぁと…
よろしくお願いします。

7/10午前まで募集
0393318NGNG
>>319, >>323
有難うございます。助言を元に考えてみて↓こんな風になりました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=108

しかし↓ここでエラーが… (´・ω・`)何故?

lt_smpRt = (unsigned char*)&hdr.samplingRate;
for(i=sizeof(int), j=0; i!=0; i--, j++)
bg_smpRt[j] = lt_smpRt[i-1];
0394デフォルトの名無しさんNGNG
>393
*bg_smpRtの初期化どこよ?(w
0395デフォルトの名無しさんNGNG
>>394
(´・ω・`)すいません、マジにわからないので教えてください。
0396318NGNG
>>393
え〜っと、もうどこから突っ込んでいけばよいのやら…(苦笑)。
エラーが出た理由は>>394さんのご指摘どおり、 bg_smpRt の領域が確保されていないから。
この場合は malloc するより、 unsigned char *bg_smpRt[sizeof(int)]; という感じで宣言した方がいいと思う。
というわけで、同様の理由により他の bg_hoge すべてでエラーが発生するはずなんだけど、本当に一箇所だけだった?
というか、なんでわざわざエンディアン変更後を保存するのかな?
構造体の中身に直接書くのはマズイの?
あと、書き出すときにちゃんとゼロパディングしないと、元とは違った値になっちゃうことがあるかもよ。
0397323NGNG
あ、間違った。396の書いた人は323ね。
0398デフォルトの名無しさんNGNG
>>392
#include <stdio.h>
#include <math.h>

double * mmul44(double * am, double * lm, double * rm, int rc)
{
  int i, j, k;
  for(i=0; i<4; i++) for(j=0; j<rc; j++) for(k=0; k<4; k++)
    am[i*rc+j] += lm[k+i*4]*rm[j+k*rc];
  return am;
}

int main()
{
  int i;
  double theta1=1.0, theta2=2.0;
  double cs1=cos(theta1), sn1=sin(theta1), cs2=cos(theta2), sn2=sin(theta2);
  double T[16]={cs1,-sn1,0,0, sn1,cs1,0,0, 0,0,1,0, 0,0,0,1};
  double U[16]={cs2,-sn2,0,1, sn2,cs2,0,0, 0,0,1,0, 0,0,0,1};
  double b[4] ={2,0,0,1}, a[4],tmp[16];
  mmul44(a,mmul44(tmp,T,U,4),b,1);
  printf("a=TUb\n");
  for(i=0; i<4; i++) printf(" %f\n",a[i]);
  return 0;
}
0399デフォルトの名無しさんNGNG
a[4] -> a[4]={0}
0400デフォルトの名無しさんNGNG
tmp[16] -> tmp[16]={0}
0401デフォルトの名無しさんNGNG
>>396
(´・ω・`)解説どうもです。自分まだまだヘボでしてどうかご勘弁を…
頑張って仕上げてみます
0402デフォルトの名無しさんNGNG
文字の集合を表す構造体Setを定義し、要素を追加する 関数を定義し、その動作を確認しなさい。
追加した要素が 集合の新しい要素の場合1、既に存在していた場合0を返すとする。
int addset(Set &set,char a)

前スレで書き込んだ者ですが答えが返ってこず、いまだにさっぱりわかりません。
どなたか分かる方いましたらお願いします。
0403デフォルトの名無しさんNGNG
>>402
文字の集合とは?
構造体Setのメンバーは?
0404_NGNG
http://homepage.mac.com/hiroyuki44/hankaku09.html
0405デフォルトの名無しさんNGNG
>>402
こんなん?

#include <limits.h>
struct Set
{
  char data[2<<CHAR_BIT] ;
} ;
int addset( Set &set, char a )
{
  int ret = set.data[a];
  set.data[a] = 1 ;
  return ret ;
}
0406デフォルトの名無しさんNGNG
>>403
すいません・・・これだけの情報しか与えられていません・・・・(涙)
0407402NGNG
>>405
レスありがとうございます!
参考にさせて頂いてもうすこし考えてみます
0408デフォルトの名無しさんNGNG
Struct Set {
    char data[(UCHAR_MAX + 1) / CHAR_BIT + 1];
} Set;

int addset(Set &set, char a)
{
    set.data[a / CHAR_BIT] &= a % CHAR_BIT;
}
0409405NGNG
問題文を読み間違えてた…
つー訳で、1と0返すのが逆になってるので訂正

int addset( Set &set, char a )
{
  int ret = set.data[a] ^ 1 ;
  set.data[a] = 1 ;
 return ret ;
}
0410デフォルトの名無しさんNGNG
>>408
どこに突っ込んで良いのやら…
0411405NGNG
何やってんだろう…
と言う訳で、疲れてるようなので、これだけ訂正して、もう寝まふ

struct Set
{
  char data[1<<CHAR_BIT] ;
} ;
0412402NGNG
ありがとうございました
0413403NGNG
>>405
メンバーが1つだけでは構造体の意味が無いような。
>>406
集合と要素が何なのかは分からない?それが分からないと解き様が無い。
0414デフォルトの名無しさんNGNG
>>413
なら生の配列をそのまま集合だとするのが良いとでも?
0415デフォルトの名無しさんNGNG
この問題がさっぱり分かりません

次々と文字を入力して、それをそのまま出力するプログラムを書け。
ただし、英小文字(aからzまで)は、すべて対応する英大文字に変換してから出力すること。
小文字から大文字への変換は32を引けばよい(Cは大文字と小文字の間の変換をもっと簡単に
書く手段も提供しているのだが、文字コードの練習のために、あえてポータビリティの点で問題の
ある書き方を採用することにする)

文字コード(数字)を入力していく場合のプログラムなら書けるのですが、
文字を入力していって小文字だった場合変換するという処理の仕方が分かりません。
文字コード→文字のやり方なら知っているのですが、文字→文字コードのやり方がわからないです
誰か・・・(´・ω・`)
0416デフォルトの名無しさんNGNG
>>415
そのまま扱えばいいんだけど。
0417デフォルトの名無しさんNGNG
>>416
そのまま??
0418416NGNG
>>415
こんな風に

#include <stdio.h>
#include <ctype.h>

int main()
{
int c;
while((c=getchar())!=EOF)
putchar(islower(c)?c-32:c);
return 0;
}
0419403NGNG
>>414
そういうわけではないけど、出題者が求めている答えには、
メンバーが複数登場すると思う。
数�Tで言うと下みたいなのがあったでしょ。
整数∈{{6の倍数⊂{2の倍数∩3の倍数}}⊂自然数}

プログラムが分からないのでなく、問題が分からないとなると
どうしようも無い。
0420デフォルトの名無しさんNGNG
>>418
すいませんヘッダはstdio.hしか習ってないのでその範囲でしか分かりませぬ(´・ω・`)
0421rNGNG
>>415
#include <stdio.h>
#include <ctype.h>

int main() {
    int c;
    while( ( c = getchar() ) != EOF )
        putchar( islower( c ) ? c - 32 : c );
}
0422416NGNG
>>420

#include <stdio.h>

int main()
{
int c;
while((c=getchar())!=EOF)
putchar((c>='a'&&c<='z')?c-32:c);
return 0;
}
0423r/421NGNG
遅い、かぶった、returnがない。
なんて恥ずかしいんだ。俺。死のう。
0424415NGNG
ありがとうございます
解決しました
0425415NGNG
しかし
?c-32:c
という処理が理解出来てなかったです(ノд`)
putchar習ったばかりで・・・テキストは「これ打つと表示出来るよ」で終わってます
どなたか解説お願いします
0426416NGNG
>>425
じゃあこれで。
これなら教師も文句言わないでしょう。不要な括弧もつけたし。

#include <stdio.h>

int main()
{
int c;
while((c=getchar())!=EOF){
if(c>='a'&&c<='z'){
putchar(c-32);
}
else{
putchar(c);
}
}
return 0;
}
0427デフォルトの名無しさんNGNG
A ? B : C
と書くと、Aが真(非0)のときBが、Aが偽(0)のときCが、この式の値になります。
つまり
islower(c) ? c - 32 : c
は、
islower(c)が真...すなわち、cが小文字の時、c-32が、cが小文字でない時にcが
この式の値になります。



# このとき、islower(c)とc >= 'a' && c <= 'z' は等価です。
0428_NGNG
http://homepage.mac.com/hiroyuki44/
0429415NGNG
なるほど!お陰様でよーく理解できました
条件たくさんつけてすみませんでした
0430デフォルトの名無しさんNGNG
>>402
#define MAX_CHAR_NUM 256

struct Set{
int cp;
char data[MAX_CHAR_NUM];
}set;

int addset(Set& set, char a )
{
int i;
for(i=0; i<=set.cp; i++){
if(a==set.data[i]) return 0;
}
set.data[set.cp++]=a;
return 1;
}
こーゆー事だと解釈いたしましたが。
0431デフォルトの名無しさんNGNG
http://esenden.com/rank/ninki/ranklink.cgi?id=mercury
0432デフォルトの名無しさんNGNG
結局>>334のプログラムは作れないの?
漏れも作れんが・・・
0433デフォルトの名無しさんNGNG
重複はいけないのか?
A=1,B=3,C=4,D=6,E=2,F=8,G=7,H=5
他にもあるがプログラムにするまでも無いだろ
0434デフォルトの名無しさんNGNG
>>392
マルチ氏ね
0435392NGNG
>>398
bcc32でコンパイル失敗しました。もちろん全角スペースは半角スペースに変換しました。
エラー内容です。
エラー E2063 3.c 17: 不正な初期化(関数 main )

>>434
まじ,はじめて書き込んだんですが…
どこにありました?宿題だから他にも聞いた人がいるだけだと。
0436デフォルトの名無しさんNGNG
うるさい、マルチはマルチだ。
0437デフォルトの名無しさんNGNG
先輩♥
0438デフォルトの名無しさんNGNG
>>432
やるきなす。
#include <stdio.h>
#include <stdio.h>
int main(){
int a,b,c,d,e,f,g,h;
for(a=1;a<=8;a++){
for(b=1;b<=8;b++){
if(a==b) continue;
for(c=1;c<=8;c++){
if(a+b != c) continue;
if(c==a || c==b) continue;
for(d=1;d<=8;d++){
if(d==a || d==b || d==c) continue;
for(e=1;e<=8;e++){
if(e==a||e==b||e==c||e==d) continue;
for(f=1;f<=8;f++){
if(f==a||f==b||f==c||f==d) continue;
if(f==e) continue;
if(d+e !=f) continue;
for(g=1;g<=8;g++){
if(g==a||g==b||g==c||g==d) continue;
if(g==e||g==f) continue;
if(a+d !=g) continue;
for(h=1;h<=8;h++){
if(b+e !=h) continue;
if(h==a||h==b||h==c||h==d) continue;
if(h==e||h==f||h==g) continue;
printf("%d %d %d %d %d %d %d %d \n",a,b,c,d,e,f,g,h);
}}}}}}}}}
0439デフォルトの名無しさんNGNG
>>438
突っ込みどころ満載だな。
0440デフォルトの名無しさんNGNG
>>439
まったくもって、やるきないし。
#include <stdio.h>
int main(){
int a,b,c,d,e,f,g,h;
for(a=1;a<=8;a++){
for(b=1;b<=8;b++){
c=a+b;if(c>=8) continue;
for(d=1;d<=8;d++){
for(e=1;e<=8;e++){
int check[9]={0};
int flag=0;
int n;
f=d+e;if(f>8) continue;
g=a+d;if(g>8) continue;
h=b+e;if(h>8) continue;

check[a]++;check[b]++;check[c]++;check[d]++;
check[e]++;check[f]++;check[g]++;check[h]++;

for(n=1;n<=8;n++){
if(check[n]!=1) flag=1;
}
if(flag==0){
printf("%d %d %d %d %d %d %d %d \n",a,b,c,d,e,f,g,h);
}
}
}
}
}
}
0441デフォルトの名無しさんNGNG
>>334ならたかが4万通りなんだから順列生成して代入すればいいでしょ。一瞬で終るよ。
0442デフォルトの名無しさんNGNG
>>441
いや、高々1680通り。
0443デフォルトの名無しさんNGNG
a,b,d,eを生成すれば、c,f,g,hは必然的に決まる。
よって、全パターンと考えれば、10x9x8x7=4320だと思うのだが。
0444デフォルトの名無しさんNGNG
>>392 こうしろ、もう遅いかもだけど。
int main()
{
int i;
double theta1=1.0, theta2=2.0;
double cs1=cos(theta1), sn1=sin(theta1), cs2=cos(theta2), sn2=sin(theta2);
double T[16]={0,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,1};
double U[16]={0,0,0,1, 0,0,0,0, 0,0,1,0, 0,0,0,1};
double b[4] ={2,0,0,1}, a[4]={0}, tmp[16]={0};
T[0]=cs1; T[1]=-sn1; T[4]=sn1; T[5]=cs1;
U[0]=cs2; U[1]=-sn2; U[4]=sn2; U[5]=cs2;
mmul44(a,mmul44(tmp,T,U,4),b,1);
printf("a=TUb\n");
for(i=0; i<4; i++) printf(" %f\n",a[i]);
return 0;
}
定数式で配列を初期化せんといかんのか >>bcc
こういうときはめんどくさいな。それが規格通りの仕様だが・・・自信なし
0445デフォルトの名無しさんNGNG
>>442
a+b=c, a+d=gから、aの取りうる値は6以下でなければならない。
b,d,eも同様なので、6P4で高々360通り。

つーかよく考えたら、a,b,d,eが1-6しか取り得ないなら
c=8, g=7を仮定して自動的にa=6, b=2, d=1が確定するじゃん。
#ついでに言えば、この段階でe=3も確定するね。
従って、a,b,d,eが1,2,3,6の組み合わせのときだけなので24通り。

しかも、a,b,d,eを四角形に並べたときに1と2が必ず対角に来るので
b=2ならa=3かa=6。他も同様なので次の8通りだけ条件が成立する。
a=6,b=2,d=1,e=3
a=6,b=1,d=2,e=3
a=3,b=2,d=1,e=6
a=3,b=1,d=2,e=6
a=2,b=6,d=3,e=1
a=2,b=3,d=6,e=1
a=1,b=6,d=3,e=2
a=1,b=3,d=6,e=2

結論、プログラムを書くまでもなかった。

>>443
1から8までって問題文を読み落としている。
0446デフォルトの名無しさんNGNG
どんなに多くても8!なんだからわざわざ考えなくてもいいと思うんだが
0447デフォルトの名無しさんNGNG
>>445
条件みまちがった(;;)あっちゃー

>>446
8! = 40320 っすね。
0448デフォルトの名無しさんNGNG
すみません、質問です。
以下の課題をやっているんですが、文字列の扱いについてよくわかりません。

課題:
リンクによるリストを用いて「辞書」を作り,その辞書を操作するためのCのプログラムを作成する.
文字列を要素(節点の項目)として持つリストを使って,次のような「辞書」システムを作りなさい.
辞書システムは,
辞書に単語を登録する(リストに文字列を挿入する) ``Insert''
辞書から単語を削除する ``Delete''
ある単語が辞書の中にあるかどうかを判定する ``Lookup''
辞書の中に登録されているすべての単語をプリントする ``Print''
を持つものとする.

0449デフォルトの名無しさんNGNG
>>448
Cでは普通ゼロ終端のchar配列で表す。
可変長ならmalloc/freeでヒープに取るといいよ。
比較したいときはstrcmp、コピーしたいときはstrcpy。
0450デフォルトの名無しさんNGNG
>>448
これは基本的なリンクリストの使用例ですね。
>文字列の扱いについてよくわかりません
struct elem {
  struct elem *next; /* NEXTポインタ */
  char *word; /* 単語 */
};
このような要素をヘッダからnextポインタでリンクする。
登録する単語をchar *newwordとすると、要素をつくるとき
struct elem* newelem = malloc(sizeof(struct elem));
newelem->next = NULL;
newelem->word = malloc(strlen(newword)+1);
strcpy(newelem->word, newword);
で単語の文字列をwordに格納する。
あとはおわかりかと。nextのほかに逆方向のポインタをつけると
削除するとき楽というのがあります。

このwordに
0451450NGNG
>>448
単語の最大長が決まっているのであれば、
#define MAX_WORD_LENGTH 128 /* 単語の最大長 */
struct elem {
  struct elem *next; /* NEXTポインタ */
  char word[MAX_WORD_LENGTH]; /* 単語 */
};
とします。このとき、
newelem->word = malloc(strlen(newword)+1);
は不要です。
0452448NGNG

早速の回答、ありがとうございます。
char[]を使って、入出力は%sを使うことはわかったのですが、その後がわかりません…\\
。
数字だけの場合なら、挿入して参照するときちんと出てくるのですが、文字にするとや\\
はろエラーが。。。
0453448NGNG
まず定義しました。
次に、初期化。
そして、挿入。
dekiteiruつもりなんですが・・・。

struct node
{
int key;
struct node *next;
};

struct node *head, *tail;
void listinitialize(void)
{
head = (struct node*) malloc(sizeof(*head));
tail = (struct node*) malloc(sizeof(*tail));
head->next = tail;
tail->next = NULL;
};



struct node *insertafter(int v, struct node *p)
{
struct node *x;
x = (struct node*) malloc(sizeof(*x));
x->key = v;
x->next = p->next;
p->next = x;
return x;
};
0454448NGNG
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

ここにもはりました。
0455デフォルトの名無しさんNGNG
二つのn次元ベクトルa、bの内積を求めるプログラムを動的メモリを活用し作成せよ。
0456デフォルトの名無しさんNGNG
>>453
sizeof(struct node)と書けよ。
0457デフォルトの名無しさんNGNG
>>453
nodeが持つのは文字列じゃないの?
0458デフォルトの名無しさんNGNG
いろいろなサイトを見ても意味がわからなかったのですが、
制御文のreturnの意味と戻り値の意味を教えてくれませんか?
0459デフォルトの名無しさんNGNG
>>458
2つの整数の和を求める関数を作れ。
話はそれからだ。
0460デフォルトの名無しさんNGNG
簡単そうなのですが私には無理な問題があります。下記のプログラムを
「分割すべき配列の要素数が3以上であれば、先頭の要素、中央の要素、末尾の要素の
3値の中央値を持つ要素を枢軸として選択する」と言う方針を用いて、関数quickを
書き換えてください。
0461460NGNG
/*
クイックソート
*/

#include <stdio.h>

#define swap(type, x, y)do { type t = x; x = y; y = t; } while (0)

/*--- クイックソート ---*/
void quick(int a[], int left, int right)
{
int pl = left;/* 左カーソル */
int pr = right;/* 右カーソル */
int x = a[(pl+pr)/2];/* 枢軸は中央の要素 */

do {
while (a[pl] < x) pl++;
while (a[pr] > x) pr--;
if (pl <= pr) {
swap(int, a[pl], a[pr]);
pl++;
pr--;
}
} while (pl <= pr);

if (left < pr) quick(a, left, pr);
if (pl < right) quick(a, pl, right);
}
0462460NGNG

int main(void)
{
int i;
int x[9];
int nx = sizeof(x) / sizeof(x[0]);

printf("%d個の整数を入力せよ。\n", nx);
for (i = 0; i < nx; i++) {
printf("x[%d] : ", i);
scanf("%d", &x[i]);
}

quick(x, 0, nx - 1);/* 配列xをクイックソート */

puts("昇順にソートしました。");
for (i = 0; i < nx; i++)
printf("x[%d] = %d\n", i, x[i]);

return (0);
}
0463デフォルトの名無しさんNGNG
>>455
合ってるかな?
#include <iostream>
using namespace std;
struct Vec
{
 float* pv;
 int d,n;
 Vec():n(0),d(0),pv(NULL){;}
 Vec(float f):n(5),d(1){pv=new float[n];pv[0]=f;}
 Vec(float f0,float f1):n(5),d(2){pv=new float[n];pv[0]=f0;pv[1]=f1;}
 Vec(float f0,float f1,float f2):n(5),d(3){pv=new float[n];pv[0]=f0;pv[1]=f1;pv[2]=f2;}
 ~Vec(){if(pv)delete[] pv;}
 Vec& DelVec(Vec* pIn){pIn->d=1;pIn->pv[0]=0.f;return *pIn;}
 void Add(float f){if(!(d%5)&&n<=d){if(pv)delete[] pv;n+=5;pv=new float[n];}pv[d++]=f;}
 Vec& operator =(const Vec& v){if(pv)delete[] pv;d=v.d;n=v.n;pv=new float[n];for(int i=0;i<d;i++)pv[i]=v.pv[i];}
 float Dot(const Vec& v)
 {
  float ret=0.f;
  if(d!=v.d){DelVec(this);return 0.f;}
  for(int i=0;i<d;i++)ret+=pv[i]*v.pv[i];
  return ret;
 }
};

int main()
{
 Vec a(1.f,0.f,1.f),b(0.f,1.f,1.f);
 cout<<"a.Dot(b)= "<<a.Dot(b)<<endl;
 return 777;
}
0464デフォルトの名無しさんNGNG
この宿題もお願いします。
hのソートが終わるたびに、配列とhの値を表示するように改良してください。


/*
シェルソート
*/

#include <stdio.h>

#define swap(type, x, y)do {type t = x; x = y; y = t; } while (0)

/*--- シェルソート ---*/
void ssort(int a[], int n)
{
int i, j, h;

for (h = n / 2; h > 0; h /= 2)
for (i = h; i < n; i++) {
int tmp = a[i];
for (j = i - h; j >= 0 && a[j] > tmp; j -= h)
a[j + h] = a[j];
a[j + h] = tmp;
}
}
0465464NGNG


int main(void)
{
int i;
int x[7];
int nx = sizeof(x) / sizeof(x[0]);

printf("%d個の整数を入力せよ。\n", nx);
for (i = 0; i < nx; i++) {
printf("x[%d] : ", i);
scanf("%d", &x[i]);
}

ssort(x, nx);/* 配列xをシェルソート */

puts("昇順にソートしました。");
for (i = 0; i < nx; i++)
printf("x[%d] = %d\n", i, x[i]);

return (0);
}
0466デフォルトの名無しさんNGNG

>>464

ど こ で h が ソ ー ト さ れ て る ん だ ?
0467デフォルトの名無しさんNGNG
time ./a.out
0468デフォルトの名無しさんNGNG
妙なswapマクロ使ってるな、と思ったら
つかってねーでやんの。
0469デフォルトの名無しさんNGNG
>>458
いろいろ問題ありだな。
文字列でなく整数のリストが作れるプログラムを最初に作って
それから、文字列のリストに修正するほうがよろしいかと。
リストが理解できる<<<リストが作れる<整数のリスト<文字列のリスト
今は正直言って「リストが理解できる」のレベルにいたってないよ。
0470469NGNG
>>453の間違いでした。
すみません458さん。
0471デフォルトの名無しさんNGNG
腕の一覧表を讃える
0472デフォルトの名無しさんNGNG
まったくの素人です。

基本的なC言語の範囲で以下のプログラムを作成せよ
「キーボードから与えられた数値(非負の整数)を
2進数表示させるプログラムを作成せよ」

授業のヒントではdo〜while構文を使うといいのでは?
と言っていた気がします。
0473デフォルトの名無しさんNGNG
>>472
まず、何がわからないのかを明確にしろ。
そのためには、フローチャート(実行手順をざっと紙にでも書いてみろ)を書く。
その上で、分からないところを、ここに書く。
後、使用している環境(OSやツール名)も書け。

素人にもレベルがあって、printfやmainすら理解しない段階も来るのでな・・・
0474デフォルトの名無しさんNGNG
>>473
何が分からないか自分でも分かりまへん
BeOS使用してまふ
ツールはクイックタイムくらいしか使ってまへん
0475デフォルトの名無しさんNGNG
頭痛がしてきた・・・
0476デフォルトの名無しさんNGNG
#include<stdio.h>

int main()
{
int i,x;

printf("input integer:");
scanf("%d", &i);

do
{
x=i%2;
i/=2;
printf("%d",x);
} while(i>0);

return 0;
}


出力が逆だけどねーw
0477デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void) {
int i,x;

printf("input integer:");
scanf("%d", &i);

for (x = 1; i >> 1 >= x; x <<= 1) ;

for (; x > 0; x >>= 1)
putchar(i & x ? '1' : '0');

return 0;}
0478デフォルトの名無しさんNGNG
#include <stdio.h>
#include <limits.h>
int main(void) {
int i,x;
printf("input integer:");
scanf("%d", &i);
for (x=1<<(INT_BIT-1); x ; x >>= 1) ;
putchar(i & x ? '1' : '0');
return 0;
}
0479478NGNG
for (x=1<<(INT_BIT-1); x ; x >>= 1) ;

↑
この最後のセミコロン消し忘れた・・・
0480478NGNG
まだ間違ってた。

#include <stdio.h>
#include <limits.h>
#define INT_BIT (sizeof(int) * CHAR_BIT)
int main(void) {
int i,x;
printf("input integer:");
scanf("%d", &i);
for (x=1<<(INT_BIT-1); x ; x >>= 1)
putchar(i & x ? '1' : '0');
return 0;
}
0481sageNGNG
int i,j=0;
for(i=0;i<<j;i++);
と書くと、for文の終了条件ってどうなるんですか?
0482481NGNG
sageミスった・・・
鬱だ・・・
スマソ。
0483デフォルトの名無しさんNGNG
>>481
i<<j
0484デフォルトの名無しさんNGNG
任数の整数を入力し、これを16進数および2進数で表示せよ
表示例は 10 = A = 00001010

ただし2進数の桁は8桁まででよい。
です。%xは使ってはいけないっとのことです。
宜しくお願いします。
0485デフォルトの名無しさんNGNG
オレニマカセロ!
0486デフォルトの名無しさんNGNG
>486
オマエニマカスィタ!

つーか、ニュー速+ 書けないウツダ…
0487デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void) {
int i,x;

printf("input integer:");
scanf("%d", &i);

printf("%d = ", i);

for (x = 0; i >> 4*x > 0; x++) ;

for (; --x >= 0;)
putchar("0123456789ABCDEF"[(i>>4*x)%16]);

printf(" = ");

for (x = 8; --x >= 0;)
putchar((i >> x) & 1 ? '1' : '0');

return 0;}
0488デフォルトの名無しさんNGNG
for (x = 0; i >> 4*x > 0; x++) ;
for (x = 1; i >> 4*x > 0; x++) ;
0489sageNGNG
ありがとうございます。
なんか r=x %16 x=x/16 のような記述で素人てきなプログラムが
いいみたいがいいらしいんですけどできるでしょうか?
0490デフォルトの名無しさんNGNG
>>489
後から条件をつけるのはマナー違反
487が一生懸命作ってくれたプログラムが無駄になるだろ
0491_NGNG
http://homepage.mac.com/hiroyuki44/
0492デフォルトの名無しさんNGNG
>>489
申し訳ございません。
>>490
失礼しました。
0493デフォルトの名無しさんNGNG
#include <stdio.h>

#include <stdlib.h>

int main(){

int a[100],sum=0,i,j;

double t;
for(i=0;i<100;i++){

a[i]=rand()%100;

}

for(j=0;j<i;j++){

sum=sum+a[j];

}

t=sum/100;
printf("sum=%d average=%f\n",sum,t);

}

乱数の合計と平均を出すプログラムなんですが、平均の小数部分がでません
どうすれば?
0494デフォルトの名無しさんNGNG
>>493
t=sum/100;
↓
t=sum/100.0;
0495デフォルトの名無しさんNGNG
t=sum/100;
↓
t=(double)sum/100.0;
0496デフォルトの名無しさんNGNG
>>493
t=(double)sum/100;
0497デフォルトの名無しさんNGNG
>>493
int a[100],sum=0,i,j;
↓
int a[100],i,j;
double sum=0;
0498493NGNG
>>494-497
C言語音痴で申し訳ありません
おかげでできました
採用したのは494さんです
0499デフォルトの名無しさんNGNG
↓の問題解けますか?
http://tokyo.cool.ne.jp/skoop_on/kadai.gif
0500デフォルトの名無しさんNGNG
へたれなので2chで画像クリックなんて怖くてできません。
0501デフォルトの名無しさんNGNG
この問題やってください。
整数1から20までの乱数をn個発生させ、各整数ごとの生成個数の平均と標準偏差を示しなさい。ここで、nは1000,2000,3000…,10000とする。なお、乱数はrandom()%20+1の式で生成するものとする。
ホントに初心者なのでお願いします。
0502デフォルトの名無しさんNGNG
怠け者の俺に答えを教えて下さい。

バブル、クイック、単純選択、単純挿入、それぞれのソートのプログラム

↓バブルだけでギブアップ。もっと綺麗に表示したい
#include <stdio.h>
int main (void)
{
int item[100];
int a,b,t;
int count;

printf("数値をいくつ入力しますか?");
scanf("%d", &count);
for(a=0; a<count; a++) scanf("%d", &item[a]);

for(a=1; a<count; ++a)
for(b=count-1; b>=a; --b) {
if(item[b-1]>item[b]) {
t=item[b-1];
item[b-1]=item[b];
item[b]=t;
}
}

for(t=0; t<count; t++) printf("%d",item[t]);

return 0;
}
0503デフォルトの名無しさんNGNG
>>501
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
const int n_min = 1000;
const int n_max = 10000;
const int n_step = 1000;
int i, n, r;
double sum, sum2, mean, sigma;
for (n = n_min; n <= n_max; n += n_step) {
sum = 0;
sum2 = 0;
for (i = n; i != 0; --i) {
r = random() % 20 + 1;
sum += r;
sum2 += r * r;
}
mean = sum / n;
sigma = sqrt(sum2 / n - mean * mean);
printf("%d\t%f\t%f\n", n, mean, sigma);
}
return 0;
}
0504デフォルトの名無しさんNGNG
>>492
素直なので教えてあげる。つーかitoaそのまま。
const char * itos(unsigned long i,char* s,int dig)
{
    unsigned long t;
    char const *h = s;
    char *p;
    if(dig == 10 && (long)i<0){
        *s++ = '-';
    }
    p = s;
    do{
        t = i%dig;
        i /= dig;
        if(t > 9)
            *s++ = (char)(t-10+'A');
        else
            *s++ = (char)(t + '0');
    }while(i>0);
    *s-- = '\0';
    while(p < s) {
        t = *s; *s = *p; *p = (char)t;
        ++p; --s;
    }
    return h;
}
0505デフォルトの名無しさんNGNG
こんなの丸写しするなら、gccのソースダウンロードしてコピーすればいいじゃん。
それだけでも勉強になるわな。
0506デフォルトの名無しさんNGNG
(´-`).。oO(…なぜgcc)
0507デフォルトの名無しさんNGNG
>>505
gccにitoaがあるなんて初耳だな〜
0508デフォルトの名無しさんNGNG
あの、HDやFDDのデータをじかに書き込み、読み込みするってできるんすか?
0509デフォルトの名無しさんNGNG
>>508
スレ違い
0510デフォルトの名無しさんNGNG
>あの、HDやFDDのデータをじかに書き込み、読み込みするってできるんすか?
フロッピーディスクドライブのデータっていうことは、何処のメーカーかとかだよね。
そりゃー難しいんじゃないかな?

どころで、ここって(・∀・)C/C++の宿題やらせてください。ver10 なんだけど、
これは宿題なのか?
0511デフォルトの名無しさんNGNG
三つの複素数 α、β、γの実数部、虚数部の値(実数)をそれぞれ入力し、
(α+γ)(β+γ)を求めて表示せよ。
ただし、複素数を、実数部と虚数部に対応するメンバで構成される構造体として表し、
複素数の加算用関数c_add()と乗算用関数c_mul()を作成して、これを利用すること。
これらの関数は、sとtを複素数を表す構造体としたとき、c_add(s,t)、c_mul(s,t)と呼び出すと、
それぞれ戻り値として、sとtを加算、または乗算した結果である複素数の構造体を返すものとする。

入力はキーボードからです。
よろしくお願いします。
0512デフォルトの名無しさんNGNG
501です。ホントに初心者でわからないところがあります。ホントにすいませんがもっと簡単なやり方はありませんか?
0513493NGNG
#include <stdio.h>
#include <stdlib.h>
int main(){
int a,i,b,guu,choki,paa,n[200],awin,bwin,even;
double wa,wb,e,game;
for(i=0;i<200;i++){
n[i]=rand()%3;
}
guu=0; choki=1; paa=2; awin=0; bwin=0; even=0; game=0;
for(a=0;a<200;a+=2){
b=a+1; game=(a/2.0)+1.0; wa=awin/game; wb=bwin/game; e=even/game;
if(n[a]==guu&&n[b]==choki) awin++;
if(n[a]==choki&&n[b]==paa) awin++;
if(n[a]==paa&&n[b]==guu) awin++;
if(n[b]==guu&&n[a]==choki) bwin++;
if(n[b]==choki&&n[a]==paa) bwin++;
if(n[b]==paa&&n[a]==guu) bwin++;
if(n[a]==n[b]) even++;
printf("%d %7.6f %7.6f %7.6f\n",game,wa,wb,e);
}
}
二人でするじゃんけんのゲームごとの二人の勝率を調べようとしましたが、
結果は0.000000だけが並ぶのはなぜですか?
0514デフォルトの名無しさんNGNG
>>512
あれ以上どう簡単にしろと
0515デフォルトの名無しさんNGNG
>>511
#include <stdio.h>
typedef struct {
double r; double i;
} c_t;
c_t c_add(c_t s,c_t t){ c_t r; r.r=s.r+t.r; r.i=s.i+t.i;return r;}
c_t c_mul(c_t s,c_t t){ c_t r; r.r=s.r*t.r-s.i*t.i; r.i=s.r*t.i+t.r*s.i;return r;}
int main(void)
{
c_t a,b,c,ans;
scanf("%lf%lf",&a.r,&a.i);
scanf("%lf%lf",&b.r,&b.i);
scanf("%lf%lf",&c.r,&c.i);
ans=c_mul(c_add(a,c),c_add(b,c));
printf("real:%f image:%f\n",ans.r,ans.i);
return 0;
}
0516511NGNG
>>515
ありがとうございます。
0517デフォルトの名無しさんNGNG
int型変数、a,b,の値をそれぞれ10,4として、次の文をそれぞれ
実行したときのaの値を表しなさい。
(1) a/=b
(2) a+5*b--
(3) a=a!=b
(4) a=a%b
(5) a=a>b
(6) a=a||b
(7) a++
(8) a=!a
(9) a+=b*2
(10) a=(++a)*(b++)

これがどうにもわかりません。。。
よろしくお願いします
0518デフォルトの名無しさんNGNG
オレニマカセロ!

連続に実行するの?
10はダメそうだけど。
0519デフォルトの名無しさんNGNG
これって、コーディングするんじゃなくて、机上で考える問題じゃ・・・
0520デフォルトの名無しさんNGNG
問題のまんまソース書いて表示すればいいんちゃうん?
0521デフォルトの名無しさんNGNG
1 2
2 10
3 1
4 2
5 1
7 11
8 0
9 18

6と10はパス。
0522デフォルトの名無しさんNGNG
世の中オブジェクト指向なんですよ。世の中の全てはオブジェクトで表せるんですよ。だから、プログラムだってオブジェクト指向が一番なんですよ。


愛の告白も、オブジェクト指向で・・・


if ( ORE->Kokuhaku(KANOJYO) == true)
{
//告白に成功したら性交:p(アホか?)
ORE->Insert(KANOJYO);
}
else
{
//フられたら、呑みまくり!!
ORE->Nomikai();
}



ごめんなさい・・・僕が悪かったです。

http://www.futuresoftware.org/diary/diary0306.html
0523デフォルトの名無しさん NGNG
int map[10][10]={ 1 1 0 0 0 0 1 0 1 0
0 1 0 1 1 1 1 0 0 0
0 1 0 0 0 0 0 0 1 0
0 0 1 1 1 1 1 0 1 0
1 0 0 0 0 0 0 0 1 1
0 0 1 0 1 0 1 1 1 1
0 1 0 0 1 1 0 0 1 0
0 1 1 0 0 0 0 1 0 0
0 1 1 0 1 0 1 1 0 1
0 0 2 1 0 0 0 0 0 0
の迷路(0は道 1は壁 2は出口)をコマンドラインでX、Y座標を入力して、
再帰を使い、出口までの経路のみを表示するプログラムをつくりたいんですけど、
おねがいたします。 
0524デフォルトの名無しさんNGNG
なせコマンドラインでXYを入力するかがわかりません
0525デフォルトの名無しさんNGNG
↑Cでおねがいたします
0526デフォルトの名無しさんNGNG
マトックは何回まで使えますか?
0527デフォルトの名無しさんNGNG
>>523
主語述語が入り組んでて文章の意味が良く分からん。
0528デフォルトの名無しさんNGNG
>>526
7回までです。あと、どこかにモーニングスターが隠されています。
0529デフォルトの名無しさんNGNG
>>528
しかし、繰り出すまでの時間が長いのでボス戦にはあまり向いてないぞ。
0530デフォルトの名無しさんNGNG
>>526,528
それだけで良く通じるな。
0531デフォルトの名無しさんNGNG
>>524 コマンドラインでってかいてあるんですよ。

>>527 すいません文章下手で。とにかく迷路の出口までの経路のみを表示するプログラムをつくりたいんですよ。
0532デフォルトの名無しさんNGNG
>>528
FF外伝聖剣伝説?激しく懐かしい。
0533502NGNG
自力で何とか出来ました|彡サッ
0534デフォルトの名無しさんNGNG
>>523
というか意味がわからん
コマンドラインで入力するX,Yが何を表しているのか
見たとこMAPはソース内で定義するんだろうけど
523の説明だとコマンドラインからMAPを入力するようにも読める
そしてスタート地点も謎
0535535NGNG
下のプログラムの出力結果はどうなるか、説明しなさい。ただし、
実行したらこうなりましたと言う回答は不可

#include<stdio.h>
int a[]={0,1,2,3,4};
int *p[]={a,a+1,a+2,a+3,a+4};
int **pp=p;

int main(void)
{
printf("a=%d,*a=%d\n",a,*a);
printf("p=%d,*p=%d,**p=%d\n",p,p,**p);
printf("pp=%d,*pp=%d,**pp=%d\n",pp,*pp,**pp);
printf("pp-p=%d,*pp-a=%d,**pp=%d\n",pp-p,*pp-a,**pp);
return 0;
}
0536無料動画直リンNGNG
http://homepage.mac.com/miku24/
0537デフォルトの名無しさんNGNG
>>535
コンパイルしないプログラムに価値なんて無いよ。
0538デフォルトの名無しさんNGNG
>>535
C/C++で出来ないからスレちがい。
0539528NGNG
ちょうどGB聖剣やってた所だから、ビビット来た。
0540デフォルトの名無しさんNGNG
↓の問題教えて下さい
http://tokyo.cool.ne.jp/skoop_on/kadai.gif
0541デフォルトの名無しさんNGNG
へたれなので2chで画像クリックなんて怖くてできません。
0542542NGNG
文字列strをメモリに格納するための関数char *SaveStr(char*)を作成しなさい。
プログラムの方針として、まずstrlen()関数により格納される文字列の長さを求め、
malloc()関数によりメモリの確保を行い、strcpy()関数により文字列のコピーを行い、
格納したアドレスを関数の戻り値とすること
0543デフォルトの名無しさんNGNG
char *SaveStr(char* s) {
char *t = malloc(strlen(s)+1);
if (t) strcpy(t, s);
return t;
}
0544デフォルトの名無しさんNGNG
リストに格納されているデータを反対側から取り出し、
ファイルに格納するプログラムを作成せよ。

jyohou2002=(struct seiseki *)malloc(sizeof(struct seiseki));
jyohou2002->next=NULL;

printf("%d人目の登録をしますか?YESなら1,NOなら2",i);
scanf("%d",&Flag);

current_p=jyohou;
while(Flag==1){
printf("%d人目の国語の登録をどうぞ",i);
scanf("%d",¤t_p->jpn);
printf("%d人目の英語の登録をどうぞ",i);
scanf("%d",¤t_p->eng);
printf("%d人目の数学の登録をどうぞ",i);
scanf("%d",¤t_p->math);

i++;
printf("%d人目の登録をしますか?YESなら1,NOなら2",i);
scanf("%d",&Flag);
if(Flag==1){
current_p->next=(struct seiseki *)malloc(sizeof(struct seiseki));
current_p->next->next=NULL;
current_p=current_p->next;
}
}
0545デフォルトの名無しさんNGNG
"¤"って、"curren"って読むのか?
0546デフォルトの名無しさんNGNG
実はprevはない
0547デフォルトの名無しさんNGNG
>>544
void s_fprint ( struct seiseki *cur, FILE *fp )
{
  if ( cur != NULL )
  {
    if ( cur->next != NULL ) s_print ( cur->next, fp ) ;
    fprintf ( fp, "%d %d %d\n", current_p->jpn, current_p->eng, current_p->math )
  }
  return ;
}
0548547NGNG
ミスってたね
if ( cur->next != NULL ) s_fprint ( cur->next, fp ) ;
後はfprintf()の部分を自分が書き出したい方法に適当に変えてちょ
0549デフォルトの名無しさんNGNG
誰か
if ( cur->next != NULL )
はイラネって突っ込んでよ…
0550C勉強中・・・1NGNG
大変恐縮ですが、以下の問題なのですが、
自分の実力ではどうにもならず、提出期限が迫っており、
現在勉強中ですが間に合いそうにありません・・・C言語にかなり強そうな方がいらっしゃるようですので、できればこの問題解決できたらと思って投稿しました。
よろしくお願いいたします。
問題:3つの外部ファイル(.datファイル)
*A.dat*
No Name
A001 Hajime
A002 Go
A003 Tetsu
A004 Yoshio

*B.dat*
No ID Point
A001 B001 75
A002 B002 56
A003 B001 58
A004 B003 87

*C.dat*
ID Subject Teacher
B001 Math Mikami
B002 English Suzuki
B003 Science Yamazaki

を、C言語で書いたプログラムでアクセスし、3つのファイルから 要素を取り出し、以下の一つの表を完成させるプログラム。datファイルの中身はカンマ区切りでも1スペース区切りにしてもかまいません。
0551C勉強中・・・2続きNGNG
*結果の表*
No Name Subject Teacher Point
A001 Hajime Math Mikami 75
A002 Go English Suzuki 56
A003 Tetsu Math Mikami 58
A004 Yoshio Science Yamazaki 87

ここで、NoとNameをA.datから、SubjectとTeacherをC.datから、
PointをB.datから持ってくるのですが、B.datとC.datのIDとSubjectを
合致させなくてはなりません。 全体の方針として、
データを開き、2次元配列にどんどん入れていって、
新しいファイルに書き出し、そのファイルを読み込んで表示させる
という流れになると思うのですが、お恥ずかしいながら自分の実力では
どうにもなりません。 このような例が書籍で調べたり、ネット上で調べても見当たらなく、
困っています。助けてはいただけませんでしょうか?
大変無理なお願いかもしれませんが、どうぞよろしくお願いいたします。
ちなみに問題の制約として、常にファイルにアクセスするような設計は不可のようです。
0552デフォルトの名無しさんNGNG
>>550
> カンマ区切りでも1スペース区切りにしてもかまいません。

これはプログラムをどちらにも対応させろという意味なのか?
0553デフォルトの名無しさんNGNG
計算結果で、複素数のiを表示させる場合はどうすればいいのでしょうか?
0554デフォルトの名無しさんNGNG
>>553
'i'という文字を印字する。
0555デフォルトの名無しさんNGNG
iはfloatのの所に書いとけばいいんですかね?
0556デフォルトの名無しさんNGNG
foatのところってどこよ
0557デフォルトの名無しさんNGNG
>>556
よく読めYO
「foatのところ」じゃなくて「floatのの所」だよ
0558デフォルトの名無しさんNGNG
じゃfloatのところってどこよ。
0559デフォルトの名無しさんNGNG
char *(*(*a[N])())()
↑って何かいてるの?
意味わからん。
0560デフォルトの名無しさんNGNG
あ、すいません。
自己解決しました。
0561デフォルトの名無しさんNGNG
560=555です。
0562デフォルトの名無しさんNGNG
C++Builderを使ってやる課題なのですが、誰が教えて頂けないでしょうか、お願いします。

酔歩・・・各時刻でx=x(t)にある点が時刻t=t+1では確率1/2でx(t)+a、確率1/2でx(t)-aに移動するとき、
この点はx軸上で酔歩を行うという。x軸、y軸に関して共に酔歩を行う時、x軸上で酔歩している点の
時刻tにおける位置をS(t)とすると、S(t)=煤ii=0からt)xi(iは添え字)である。ここで確率1/2でa、
確率1/2で-aの値と取る互いに独立な確率変数である。

ここからが問題文に入るのですが、
a=1として(x,y)平面上で一点の酔歩を行いt=0からt=1000までの点の軌跡を描きなさい。但し、初期値は(0,0)
とします。更に時刻tまでの点のx座標の絶対値をξ(t)、すなわちξ(t)=max|(i=0〜x)xi|としたとき、
ξ(t)を求めて図を描きなさい。

与えられているヒントは、乱数はxi+1(i+1は添え字)≡λxi+μ(mod P)を使う。
LineToメソッド MoveToメソッドを使う。
ということです。

c++Builderを使うとどんなプログラムになるか教えて下さい。
0563デフォルトの名無しさんNGNG
λっていくつ?
μ()ってどんな関数?。
0564デフォルトの名無しさんNGNG
>>559
関数ポインタの配列じゃないの?
その関数のプロトタイプ宣言を含んだ書き方だからややこしいだけでしょ。
0565デフォルトの名無しさんNGNG
>>563
そこまでは指定されてないんですよ。ただこれを使えば一番良いとしか。
0566デフォルトの名無しさんNGNG
ふーん、じゃ動くものは作れないね。
0567デフォルトの名無しさんNGNG
>>566
基本的に乱数は好きなように作っていいみたいです。
0568デフォルトの名無しさんNGNG
なんだそりゃ。いいかげんな問題だな。
0569デフォルトの名無しさんNGNG
C++Builderでも、SDKプログラミングはできる(w
0570デフォルトの名無しさんNGNG
C++Builderでどんなプログラムになるか教えて下さい。
0571デフォルトの名無しさんNGNG
こんなもんか(w
int main(){
HDC dc = GetDC( NULL ); int t,x=0,y=0; RECT rect; POINT prevorg;
GetClientRect( GetDesktopWindow(), &rect );
SetWindowOrgEx( dc, -rect.right/4, -rect.bottom/4, &prevorg);
MoveToEx( dc, -100,0,NULL);LineTo( dc, 100,0);
MoveToEx( dc, 0,-100,NULL);LineTo( dc, 0,100);
MoveToEx( dc, 0, 0 ,NULL);
for( t=0; t<1000; t++ ){
x += rand() > RAND_MAX/2? 1 : -1;
y += rand() > RAND_MAX/2? 1 : -1;
LineTo( dc, x, -y ); MoveToEx( dc,x,-y ,NULL);
}
SetWindowOrgEx( dc, 0, -3*rect.bottom/4, NULL);
MoveToEx( dc, 00,0,NULL);LineTo( dc, 1000,0);
MoveToEx( dc, 0, 0 ,NULL);
for( t=0, x=0; t<1000; t++ ){
x += rand() > 0x7fff/2? 1 : -1;
LineTo( dc, t, -abs(x) );MoveToEx(dc, t, -abs(x), NULL);
}
ReleaseDC( NULL,dc );
}
0572デフォルトの名無しさんNGNG
C言語で
何秒間の間に数字の1を何回押したかというプログラムを作りたいのですが
誰か教えて下さい。

何秒間というのはランダムです(5秒〜30秒ぐらいの間)
0573デフォルトの名無しさんNGNG
>572
ANSI-Cでは無理。激しく環境依存。
0574デフォルトの名無しさんNGNG
>>572
その文章じゃあ、何を教えてほしいのかわからん
0575572NGNG
>>574
ソースです。
0576デフォルトの名無しさんNGNG
ソースもらっても作ったっていうのか…
0577デフォルトの名無しさんNGNG
N=2^P個のデータをフーリエ変換するDFT,FFTのプログラムを教えて下さい。
お願いします。
0578デフォルトの名無しさんNGNG
>>577
そういうのはぐぐった方が早い
0579572NGNG
>>576
そういえばそうですね・・・

C言語で
何秒間の間に数字の1を何回押したかというプログラムを
誰か作ってください。

何秒間というのはランダムです(5秒〜30秒ぐらいの間)
0580448NGNG
返事が遅くなってすみません。みなさまのおかげで、無事に完成しました。
どうもありがとうございました。
0581デフォルトの名無しさんNGNG
>>579
>>573が読めんか?
0582デフォルトの名無しさんNGNG
>>578
どういうことですか?
0583デフォルトの名無しさんNGNG
有名な数学的問題は大抵Webにころがっている
0584572NGNG
>>581
そうですか・・・
0585デフォルトの名無しさんNGNG
>>577
http://www5.airnet.ne.jp/tomy/cpro/sst7.htm#top
を参考にしてください。

void fft1(double ar[], double ai[], int n, int iter, int flag)
がそう。引数の使い方を間違えずに。
ar[]はデータの実数部、ai[]はデータの虚数部、nはデータ数(=2^k)
flagは0がフーリエ変換で1が逆フーリエ変換。
iterはコードを見る限り0でよし。

だいたいFFT(=DFT)をプログラムで利用している人でFFTの
ロジックをちゃんと理解している人は10%くらいです。
残りの90%は使い方(=引数の意味)だけ理解している人です。

引数の意味の意味がわからない人は・・・
0586デフォルトの名無しさんNGNG
http://jbbs.shitaraba.com/computer/6765/
この掲示板の「あのぅ〜」ってスレの>>14にテトリスがあるんだけど、
あれってどうやってるんですか?テトリスを作るには、
まず色ブロックを上から降らせるんですよね。
上から降るというのはどうやって実現できますか?
ヒントお願いします
0587デフォルトの名無しさんNGNG
製作者にきけばいいじゃん
0588デフォルトの名無しさんNGNG
いや、ここで聞くのが確実だと思う。
0589デフォルトの名無しさんNGNG
俺はそうは思わない。
0590デフォルトの名無しさんNGNG
>>589
激しく同意
0591588NGNG
>>589,>>590
激しく反対
0592デフォルトの名無しさんNGNG
反対の反対は賛成な〜のだ
0593デフォルトの名無しさんNGNG
>>572>>579
#include <stdio.h>
#include <time.h>
#include <conio.h>
#define WAIT 5
int main(void)
{
    int pushOne=0;
    clock_t start=clock()/CLOCKS_PER_SEC;
    for(;clock()/CLOCKS_PER_SEC-start<=WAIT;)
        if(kbhit()&&getch()=='1') pushOne++;
    printf("'1'を%d回押しました\n",pushOne);
    return 0;
}
0594デフォルトの名無しさんNGNG
【初心者】ゲームのプログラム作りたいんだけど
http://pc2.2ch.net/test/read.cgi/tech/1035233350/

こことかは?
タイトルしか読んでないけどw
0595デフォルトの名無しさんNGNG
>>593
conio.hがOSに依存するね。
まぁ、こういうのは仕方ないけど。
0596デフォルトの名無しさんNGNG
>>566
>ふーん、じゃ動くものは作れないね。

乱数発生方法として線形合法を使えといっている。
μは関数ではなくて単なる定数。
λも定数
≡λxi+μ(mod P) は合同式

潔く言い切ったつもりだろうが、教養のなさを露呈することに
なりましたな、あほ。
0597_NGNG
http://homepage.mac.com/hiroyuki44/jaz09.html
0598keiNGNG
課題助けてください。
課題1:3科目(英数理)の点数をキーボードから入力して、それらの点数のうち最も高い点数を表示するプログラムを作りなさい。
自分が作ったのは下のです
#include<stdio.h>
main()
{
int eng,math,sci,max;
printf("英語の点数--->");scanf("%d",&eng);
printf("数学の点数--->");scanf("%d",&math);
printf("理科の点数--->");scanf("%d",&sci);
if(eng>math){
if(eng>sci){
max=eng;
}
else{
max=sci;
}
}
else{
if(math>sci){
max=math;
}
else{
max=sci;
}
}
printf("最高点は%d点です\n",max);
}
でもどうやら「関数」構造でなければならないらしいのですが、その時の講義に法事の為出席できなくて関数がわかりません。
本も読んだのですがプロトタイプが必要とかそれくらいしか理解できなかったです。
基礎論なので難しい関数は使わないはずです。よろしくお願いします。void return ansとか本に書いてあります。
0599デフォルトの名無しさんNGNG
お願い致します。

以下の積分は形を出力するプログラムを作成しなさい。

g(t)=∫cos(5t)dt

g(0)=0より、g(t)=1+0.2*sin5tである。
0600デフォルトの名無しさんNGNG
>>599
600get
0601デフォルトの名無しさんNGNG
自分で作ったのは以下です

#include <stdio.h>
#include <math.h>

main()
{
double g;
double x;

for ( x=0; x < 100; x=x+1)
{

g = 1 + 2*sin(5*x);

printf("%f %f\n", 5*x, g);
}


}
0602デフォルトの名無しさんNGNG
>>599
積分ってのがどういう演算か理解してるなら答えは出たようなもんだと思うが。
なんか妙にカクカクしたグラフ見たことあるだろう?
0603デフォルトの名無しさんNGNG
>>602
積分演算の結果はカクカクしているのか?
サイン波がカクカクしているのか?
その理解とやらを教えてくれ。
0604デフォルトの名無しさんNGNG
線形リストを用いて、過去に素数とわかった数を保存し、
指定された数(N)以下の素数を求めるプログラムを作成せよ。
ただし、Nはプログラム実行中の外部入力できるようにすること。
0605デフォルトの名無しさんNGNG
>>603
http://www.geocities.co.jp/Technopolis/3209/measure_and_fuzzy/integral.html

みたいな奴のこと言ってんだろうな。
0606C勉強中・・・NGNG
>552
いえ、どちらでもできれば問題なしです。
ここのスレッドはやってますね^^
どこかの本読むよりよっぽど勉強になります。
よろしくおねができますでしょうか?
0607keiNGNG
教えていただけませんか?お願いします。
0608デフォルトの名無しさんNGNG
C言語で数当てゲーム(課題)を作っていて制限時間を30秒に
指定したいのですがどのようにしたらいいのでしょうか?
一応中身はfor文でやっています。基礎の基礎位のレベルでお願いします。
あとその秒数表示を1秒ごと同じ場所でカウントダウン方式みたいな感じで
やりたいのですがそれはどうしたらいいのでしょうか!?
よろしくお願いします。
0609デフォルトの名無しさんNGNG
2GB以上のファイルが読めないんですが,
どうればいいですか?
0610デフォルトの名無しさんNGNG
>>609
OS変える。
0611デフォルトの名無しさんNGNG
>>607
#include <stdio.h>
#include <math.h>
main() {
double g,x;
int i;
for ( x=0; x < 100; x=x+1) {
g = 1 + 2*sin(5*x);
printf("%05.2f ",g);
if(g>0){
for(i=0;i<30;++i) printf(" ");
for(i=0;i<(int)(g*10);++i) printf("I");
}else if(g<0){
for(i=0;i<30.0+g*10;++i) printf(" ");
for(;i<30;++i) printf("I");
}
printf("\n");
}
}
0612C勉強中・・・NGNG
550、551の質問内容ですが、締め切りが明日でかなり困ってしまっています。どなたかおしえていただけませんでしょうか?
よろしくお願いしますm__m 実力不足で申し訳ないです・・・
0613デフォルトの名無しさんNGNG
>>599
問題が今一つわからないです。
よくあるのが求積つまり面積を求めるやつ。
あとは原始関数を求めるやつ。(∫cos(5t)dt=5sin(t)?)
おそらく面積を求めるほうですよね。
0614デフォルトの名無しさんNGNG
マンドクセー
0615keiNGNG
611さんありがとうございます。
でもそれ僕のではありません。
僕の課題は599です。お時間ありましたらお願いします。
0616デフォルトの名無しさんNGNG
>>609
WindowsではWinAPIのRead関数を使わなければ読めなかったような
記憶があるが?違ったかな?
0617611NGNG
>>599の解答のつもりで書いたけど?w
30のところは10にしてもいいかな。
0618609NGNG
>>616
OSはRed hat linuxかMac OS X 10.2
おそらくコンパイラにも関係してますよね
0619keiNGNG
間違えました598です。
0620デフォルトの名無しさんNGNG
>>598
#include<stdio.h>
void foo()
{
int eng,math,sci,max;
printf("英語の点数--->");scanf("%d",&eng);
printf("数学の点数--->");scanf("%d",&math);
printf("理科の点数--->");scanf("%d",&sci);
if(eng>math){
if(eng>sci){
max=eng;
}
else{
max=sci;
}
}
else{
if(math>sci){
max=math;
}
else{
max=sci;
}
}
printf("最高点は%d点です\n",max);
}

main() { foo(); }
0621デフォルトの名無しさんNGNG
どなたかお願いいたします。

文字列でIPアドレスとネットマスクが与えられた時、ネ
ットワークアドレスを文字列が返す関数を定義しなさい。
0622デフォルトの名無しさんNGNG
>>598
#include<stdio.h>
void foo()
{
int eng,math,sci;
printf("英語の点数--->");scanf("%d",&eng);
printf("数学の点数--->");scanf("%d",&math);
printf("理科の点数--->");scanf("%d",&sci);
printf("最高点は%d点です\n",eng > math ? eng : math > sci ? math : sci);
}
main(){foo();}
0623keiNGNG
>>620
ありがとうございます!
0624デフォルトの名無しさんNGNG
よくある宿題とその回答を集めた「宿題FAQ」でもつくれば重複も減るね
0625デフォルトの名無しさんNGNG
>>612
スーパー手抜きバージョン

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=110
0626デフォルトの名無しさんNGNG
>>621
dotted decimal でいいのか?
0627デフォルトの名無しさんNGNG
環境依存しないで書けるの?
0628デフォルトの名無しさんNGNG
>>626
すみません。
dotted decimalの言葉の意味すらわからないのです。
本来ならある程度理解してから質問すべきところを、どうもすみません。

  char* netaddress(char* ipaddress,char* netmask)

一文を使うようなのですが…。
よろしければご教授おねがいします。
0629デフォルトの名無しさんNGNG
>>628

(>>626 さんじゃあないです)

dotted decimal は "151.55.11.22" みたいな文字列。

で、
char* ipaddress などに入ってくるモノや、返すべき値は、どのようなものなのでしょうか?
前述した文字列なのでしょうか?
それとも、char型4つの配列なのでしょうか?(ipaddress[0]=151, ipaddress[1]=55,...みたいな)
0630デフォルトの名無しさんNGNG
#include <stdio.h>

char *netaddress(char *ipaddress, char *netmask) {
 int a[4], m[4];
 char *netaddr;

 sscanf(ipaddress, "%d.%d.%d.%d", &a[0], &a[1], &a[2], &a[3]);
 sscanf(netmask, "%d.%d.%d.%d", &m[0], &m[1], &m[2], &m[3]);
 sprintf(netaddr, "%d.%d.%d.%d", a[0] & m[0], a[1] & m[1], a[2] & m[2], a[3] & m[3]);
 return netaddr;
}

int main(void) {
 printf("%s\n", netaddress("192.168.0.1", "255.255.255.0"));
 return 0;
}

こんなんでいいのかね
0631デフォルトの名無しさんNGNG
static char netaddr[16];

とでもしなきゃまずいんじゃね?
0632デフォルトの名無しさんNGNG
宿題:(C言語)3つの実数、a,b,cを入力し、それを三辺とします。
三角形が不等辺三角形、二等辺三角形、正三角形いずれかであるかを
答えるアルゴリズムを作りフローチャートに示せ。アルゴリズムだけ
でもいいのでお願いします。できればフローチャートの説明もお願い
します。
   
0633デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
int intcmp(const void *k, const void *n){return *k-*n;}
main(){
int a[3];
printf("三辺の長さを入力 > ");
scanf("%d %d %d",&a[0],&a[1],&a[2]);
qsort(a,3,sizeof(int),intcmp);
if(a[0]==a[2]) printf("正三角形です。\n");
else if(a[0]==a[1] || a[1]==a[2]) printf("二等辺三角形です。\n")
else printf("不等辺三角形です。\n");
}
0634デフォルトの名無しさんNGNG
あ、整数でやっちゃった。
0635デフォルトの名無しさんNGNG
>>632

三辺が等しかったら、正三角形
それ以外で、二辺が、等しかったら、二等辺三角形
それ以外なら、不等辺三角形
0636デフォルトの名無しさんNGNG
>>632
アルゴリズム
i = ( a == b ) + ( b == c ) + ( c == a ) ;
i が 3 なら正三角形
i が 1 なら二等辺三角形
i が 0 なら不等辺三角形
以上
0637デフォルトの名無しさんNGNG
アルゴリズム・・・
フローチャート・・・
0638633NGNG
>>636
それだ。負けた。
0639デフォルトの名無しさんNGNG
>>550-551&>>612
>>625さんがもう解いているけど、せっかくだから。.datファイルにデータを追加してもいいバージョン。だけどエラーチェックなし(笑)。
htttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=111&fi=no
0640633NGNG
>>636
だが二等辺三角形は1じゃなく2だ
0641633NGNG
ごめん1でいいんだ
0642デフォルトの名無しさんNGNG
>>640
うんにゃ。
i=2にはならないです。
a=b かつ b=c のときには、3になりますよ。
0643デフォルトの名無しさんNGNG
>>604
次の線形リストを参考にしてできませんか?

#include<stdio.h>
#include<stdlib.h>
#define MAX 5
typedef struct data Data;
typedef struct data *DataP;
struct data{
int val;
DataP prev;
};
DataP add_data( int i, DataP last);
void print_data(DataP last);
void free_list(DataP last);
int main()
{
int i;
DataP last = NULL;
for( i = 0; i < MAX; ++i){
printf("input data %d\n",i);
last = add_data(i,last);
}
print_data( last);
exit(0);
}
0644642NGNG
>>640-641
すみません。
0645デフォルトの名無しさんNGNG
つづき
DataP add_data( int i, DataP last)
{
DataP new;
if(( new = (DataP)malloc( sizeof(Data))) == NULL){
fprintf( stderr, "data allocation erroe !\n");
exit(1);
}
new -> val = i;
new -> prev = last;
return new;
}
void print_data( DataP last)
{
while( last != NULL){
printf("output data %d\n", last -> val);
last = last -> prev;
}
}
void free_list( DataP last)
{
DataP olast;
while( last != NULL){
olast = last;
last = last -> prev;
free( olast);
}
}
0646デフォルトの名無しさんNGNG
>>629-630
レスありがとうございます。
忘れてました
  #include <string.h>
 #include <strstre.h>

  char* itoa(int n){
 char* s;
 s= new char[10];
 strstream st(s,0,ios::out);
 st << n << '\0';
 return _strdup(st.str());
}
この部分を使うようののですが。
たびたびすみませんが、よろしくおねがいします。

0647デフォルトの名無しさんNGNG
なんだそりゃ・・・C/C++混在だな・・・。
0648デフォルトの名無しさんNGNG
しかもdeleteするのは勘弁してほしいコードだな・・・
0649デフォルトの名無しさんNGNG
#include <stdio.h>

char *netaddress(char *ipaddress, char *netmask) {
 int a[4], m[4];
 static char netaddr[16];
 sscanf(ipaddress, "%d.%d.%d.%d", &a[0], &a[1], &a[2], &a[3]);
 sscanf(netmask, "%d.%d.%d.%d", &m[0], &m[1], &m[2], &m[3]);
 sprintf(netaddr, "%s.%s.%s.%s", itoa(a[0]&m[0]), itoa(a[1]&m[1]),itoa(a[2]&m[2]),itoa(a[3]&m[3]));
 return netaddr;
}

int main(void) {
 printf("%s\n", netaddress("192.168.0.1", "255.255.255.0"));
 return 0;
}

0650デフォルトの名無しさんNGNG
今日がんばって作ったよ!いいのたくさん集めたから見てね!
http://www3.free-city.net/home/espresso/adult/xxx.html
0651デフォルトの名無しさんNGNG
>>650
お暇なんですね。
0652デフォルトの名無しさんNGNG
>>649
>  sprintf(netaddr, "%s.%s.%s.%s", itoa(a[0]&m[0]), itoa(a[1]&m[1]),itoa(a[2]&m[2]),itoa(a[3]&m[3]));

sprintf(netaddr, "%d.%d.%d.%d", a[0]&m[0], a[1]&m[1], a[2]&m[2], a[3]&m[3]);

じゃだめなの ? (つーか、itoa() って静的領域返さなかったっけ ?)
0653デフォルトの名無しさんNGNG
>>652
>>646のitoa()使えってことじゃないの?
その割りには解放してないけど。
0654デフォルトの名無しさんNGNG
>>649
なにやってんのぉー。
それにしてもstaticのいみねーよ。
0655C勉強中・・・NGNG
>625
すごい!正直感動しました。ありがとうございました!
0656デフォルトの名無しさんNGNG
>>653
すまん、上見てなかったよ。

>>654
また、釣りキチ三平か...。
0657572NGNG
>>593
ありがとうございました。

あともうひとつ質問があるのですが、
今度はユーザーが時間を設定できるプログラムを作りたいんですが
誰か作ってください。
(ずうずうしくてすいません)
0658デフォルトの名無しさんNGNG
>>593のソースの動きを見てれば
どこいじればいいかわかるとおもうが
0659デフォルトの名無しさんNGNG
>>657
どっちかと言うと、
http://pc2.2ch.net/test/read.cgi/tech/1050268207/l50
に行け。
0660デフォルトの名無しさんNGNG
#include<stdio.h>

struct node
{
struct node *left;
struct node *right;
char label;
};

//preorder
void preorder(struct node *p)
{
if(p==NULL)return;

printf("\n stop node %c \n",p->label);
preorder(p->left);
preorder(p->right);
}

//inorder
void inorder(struct node *p)
{
if(p==NULL)return;

inorder(p->left);
printf("\n stop node %c \n",p->label);
inorder(p->right);
}

0661デフォルトの名無しさんNGNG
660の続き
//postorder
void postorder(struct node *p)
{
if(p==NULL)return;

postorder(p->left);
postorder(p->right);
printf("\n stop node %c \n",p->label);
}

void insertdata(struct node **p)
{
if(p==NULL)return;

insertdata(p->left);
scanf("%c",&p->label);
insertdata(p->right);
}

void main(void)
{
struct node *ptr;
insertdata(&ptr);

preorder(&ptr);
inorder(&ptr);
postorder(&ptr);
}
0662デフォルトの名無しさんNGNG
660-661のプログラムでエラーがでてしまってどこを変更すべきかわかりません。
どなたか教えてください。
0663デフォルトの名無しさんNGNG
&ptr -> ptr
0664デフォルトの名無しさんNGNG
>>663
それはすでに気づいてなおしましたが、insertdata周りでエラーがでます。
0665デフォルトの名無しさんNGNG
**p→*p
0666デフォルトの名無しさんNGNG
>>665
エラーはでなくなりましたが(コンパイルは通るが)起動するとすぐに落ちます。
0667デフォルトの名無しさんNGNG
1. strut node ptr の指している実態が無い。
2. if(p==NULL) というコードはあるが、リストの端をNULLにするコードは無い

この辺りが問題かと。
0668デフォルトの名無しさんNGNG
デバッガでメモリ内容見ましょう。これくらいなら追いかけられるはずです。
0669608NGNG
>>608
どなたかお願いします。
0670デフォルトの名無しさんNGNG
まあ、汎用ではないが、入力の監視に、selectあたりを使う。
秒数表示のところも、汎用ではできないが、エスケープシーケンスか、
コンソール系APIを使うのが妥当か。
いずれも基礎の基礎レベルとはいえないが、「基礎の基礎」に
こだわるなら、答えは、「できない」
0671デフォルトの名無しさんNGNG
>>608
C言語が定めてない帰納が必要だから良い答が欲しければ
あなたが想定している環境(Cの処理系と実行環境)を指定しなければ無理かと
0672デフォルトの名無しさんNGNG
>>668
デバッガ以前。このプログラムではなにをどうしようとするのかわからない。
脊髄反射で書いているだけでアドバイスとしては最低。
>> 665
**p を直すのでは本末転倒。insertnode は ptr のほかに他の引数が必要
ではないか?
>> 667
同意します。

というわけで、プログラムの意図を教えてください>>662
0673デフォルトの名無しさんNGNG
>>672
説明不足ですみません。insertnodeで値を入力した2分木を作成し、そのあと前置、中置、後置
探索をするというものです。
0674デフォルトの名無しさんNGNG
>672
最低っていわれちゃいました。別に脊髄反射ではないんですけどね。
p->leftとかにNULLが入っているのかどうかデバッガで確かめてくれって
意味で書いたんですけど。意味なしレススマン。
0675デフォルトの名無しさんNGNG
下のソースなのですが1つ問題がありますいい案おしえてください
内容はデータに10文字以内のキャラを格納なのですが10文字以上入力されたときに
このままだと問題が発生してしまいます charのバイトの確保どうすれば解決しますか?
ただし char[288]にすると返答したら300文字打ち込む言われてしまいましたTT

/*ソース(このままコピペしてもグローバル宣言ないので動きません)*/
main()
{
int i,j;
char data[10];

j=1;
while(j==1)
{
gets(data);

if(strlen(data)<=9)
{
j=0;
}
if(strlen(data)>10)
{
printf("文字数オーバ打ち直しPLA\n");
}
}
}
0676デフォルトの名無しさんNGNG
strlen(data)>10
10じゃなく9じゃないですか?
0677667NGNG
しょーがねぇなぁ。「とりあえず」動くだけなら main を
int main(void)
{
  struct node ptr;
  ptr.left = NULL;
  ptr.right = NULL;
  insertdata(&ptr);

  preorder(&ptr);
  inorder(&ptr);
  postorder(&ptr);
  return 0;
}
ってしる!あと、>>672よ、同意してくれんのはいいんだが、>>665は合ってると思うが。
0678デフォルトの名無しさんNGNG
こんな課題なんですがぜんぜんわかりません。
どなたかぜひお願いします。
教えてください。

英語の文章データを読み込んで単語に分け、アルファベット順に整理してその出現頻度を表示するプログラムを作成せよ。作業を簡単にするため、英文のテキストは以下のようなスタイルになっているとする。
(1)全て小文字で書かれている。
(2)1つの単語は2行にまたがらない。(ハイフンで継続しない)
(3)単語の区切りはスペース、コンマ、ピリオド、疑問符?、感嘆符!、括弧()などの特殊記号である。
(4)ハイフンとアポストロフィをもつスペル(READY-MADE, I’ve)は1つの単語とする。
(5)総語数は100語以内である。
(6)1語の長さは15字以内である。

【手順】
1.ファイルを読み込む

2.文章を単語を区切る
区切り記号を利用して単語に分ける。
区切り記号と文字を見分けるため、マーク用の文字型配列を用意し、アルファベット文字のある位置には#印、それ以外にはスペースを代入する。
3.一語ずつアルファベット順に仕分けて出現頻度もカウントする
新しい単語が入る位置を探し、辞書順の席が見つかれば、それまで並んでいたものを1つずつ後へずらしてから挿入し、同じものがすでにあればその語のカウント数を1増やす。単語が入るべき位置や同じ語が見つからなければ語種数を1増やし、最後尾に1語追加する。

4.結果を表示する
受け取ったデータを読みやすい形に出力する。縦にアルファベット順に並べ、3列程度に並べて表示するようにする。

  (表示の例)
a 5 be 2 from 1
and 8 but 1 has 2
at 2 course 1 in 6
0679675NGNG
>>676
あ! そこ書き間違えましたstrlen(data)>9
ですね^^;
さらに書き間違いで仕様で「10文字以内のキャラ・・・」でなくて「9文字以内・・・」が正しいです
まあその辺の細かい所は気にしないでw
それよりも本題のバイト確保の仕方が分からなくて困ってます
仕様が9文字格納するのだがそこを100文字打つとかぬかす奴はどうすればいい?TT
char dataの設定の仕方教えてくださいTT
0680デフォルトの名無しさんNGNG
というか、getsやめてfgetsにしろ。
0681675NGNG
>>680
仕様がgetsなんですよTT
0682デフォルトの名無しさんNGNG
(σ・∀・)σゲッツ!!
0683デフォルトの名無しさんNGNG
>>679
> 仕様が9文字格納するのだがそこを100文字打つとかぬかす奴はどうすればいい?TT
ポア
0684デフォルトの名無しさんNGNG
>>679
malloc はダメなの?
>>681
そんな仕様は窓から投げ捨てよう!(笑)
0685時代はNGNG
(σ・∀・)σゲッツ!!
0686675NGNG
mallocで領域確保するのはいいのだが
結局char data[10];ってしてる限りそこに20文字入れたれたら問題発生するのでは?
char data[10000]ってしても10000以上入力する言われそうですTT
0687608NGNG
VC++のC言語で文字を拡大表示などはできないのでしょうか?
0688デフォルトの名無しさんNGNG
そこに入れなきゃいーじゃん
0689デフォルトの名無しさんNGNG
>>686
gets() 使う限り無理だから、素直にあきらめろ。

>>687
できるよ。
0690608NGNG
どうすれば出来ますか!?
なんか質問ばかりですいません…。
0691デフォルトの名無しさんNGNG
>678
ほとんど同じようなことやったことある。
それはいいとして仕様は結構詳しく書いてあると思うんだけど、
どの部分がわからないのでしょうか?わからない所がわからなきゃ
先に進めないのでまずそこから教えてください。
0692デフォルトの名無しさんNGNG
>>686
最初に256文字で領域を取っておいてそこに入れていく。
もし足りなくなったらまた256文字領域を確保してそこに入れていく。
これをメモリが無くなるまで繰り返す。私ならこうやるけど…。
0693675NGNG
>>692
そのやり方(ソースの書き方)教えてください
そんな便利な方法やり方知りません^^;
0694デフォルトの名無しさんNGNG
(σ・∀・)σゲッツ!! じゃ無理
0695675NGNG
>>694
getsじゃダメなのか _| ̄|○
根本的にgetsが無理があるのですね ハァ・・・
0696デフォルトの名無しさんNGNG
>>608, 690
イメージフォントだから拡大のレベルに応じてフォントのサイズの変更
するくらいしかできないです。
MSゴシックの12ビットからMSゴシックの18ビットになどですね。
画面アプリケーションを作る上で、これは厄介な問題です。
逆にこれができればわざわざサイズごとのフォントを用意する必要も
ないわけです。
0697デフォルトの名無しさんNGNG
というか、mallocとか使わずにC++逝って
std::string使え、っと。
0698デフォルトの名無しさんNGNG
>>691
えっと、まず、あらかじめ作られているファイルを読み込むのがわからないです。
ファイルを作ってそれを読み込むっていうのはわかるのですが、あらかじめ作られているのだと、ちょっと。。。
次に、2の工程はどうすればいいのか全然わからないです。
0699デフォルトの名無しさんNGNG
>>608
キミの環境は?
0700デフォルトの名無しさんNGNG
700getとかやってんの。もー見てらんない。
0701デフォルトの名無しさんNGNG
>698
fopen関数って知ってますか?ファイル読み込みにはその関数を使います。
手順2なんですけどはっきり言って自分にはよく理解できませんw。
>区切り記号と文字を見分けるため、マーク用の文字型配列を用意し、
>アルファベット文字のある位置には#印、それ以外にはスペースを代入する。
こうした後にこれを何に役立てるのかわかりません。文字の切り分け自体は
strtok関数とか使えばいいと思うんですけど、役に立たなくてすいません。
他の方でこの文章の意味を推測できる方いますか?
0702デフォルトの名無しさんNGNG
>>701
↓みたいなことなんでない?

バッファ1  同サイズのバッファ2
h       #
o       #
g       #
e       #
<space>   <space>
h       #
o       #
(略)

激しく無意味な予感…
0703デフォルトの名無しさんNGNG
>702
ということはバッファ2で、#が出てくる始めの配列番号と#が連続で出てきた回数をカウントして
バッファ1の中身を単語に切り分けていくということでしょうか?自分の宿題じゃないのに
本気で悩んでしまいました。これって素直なやり方の1つなんでしょうか。
0704デフォルトの名無しさんNGNG
>686
どーんと100MBくらい確保して、
「じゃあ1億文字入力してみろや」
くらいいえよ。
0705よし@C++NGNG
英語・国語・数学の点数を入力して、それらの点数のうち、どれか一つでも90点以上であれば“合格”、
または平均点が60点以上であれば“合格”と表示するプログラムを、関数構造を使って作成せよ。
という課題がでたんですが、正直全然わかりません。基礎論の授業の前期テストなんでホントは簡単なはずなんですが…
勉強がたりなかったようです(:_;) どなたか教えていただけませんか?
0706675NGNG
>>704
(・o・)ゞ了解!
100MB確保しますw
これで実践する気にならないね もし1億文字入力されたら報告しますw
0707デフォルトの名無しさんNGNG
>>705
#include <stdio.h>

char *nurupo(int uho, int iiotoko, int yaranaika)
{
int ave = (int)((uho+iiotoko+yaranaika) / 3);

return(uho >= 90 ? "合格" : iiotoko >= 90 ? "合格" : yaranaika >= 90 ? "合格" : ave >= 60 ? "合格" : "ば〜か");
}

int main(void)
{
int uho, iiotoko, yaranaika;

printf("英語 = "); scanf("%d", &uho);
printf("国語 = "); scanf("%d", &iiotoko);
printf("数学 = "); scanf("%d", &yaranaika);

printf("%s\n", nurupo(uho, iiotoko, yaranaika));

return(0);
}
0708デフォルトの名無しさんNGNG
>>705
#include <stdio.h>
int func(int a,int b,int c);
main(){
int a,b,c;
printf("英語・国語・数学の点数を入力して下さい\n");
scanf("%d%d%d",&a,&b,&c);
if(func(a,b,c)==1){
printf("合格");
}
}
func(int a,int b,int c){
int d;
d=(a+b+c)/3;
if(d>=60){
return 1;
}else if(a>=90 || b>=90 || c>=90){
return 1;
}
return 0;
}
0709デフォルトの名無しさんNGNG
でも、fgetsって長さが読み込んだ文字数+1になってない?
改行文字でも入るのかな。それでめんどくさいから、[BUFSIZ]にして
gets使ってた。エラーチェックしてもダメなん?
0710デフォルトの名無しさんNGNG
C FAQ嫁
0711684=692NGNG
>>693
ゴメン、お酒飲んでたの♥
コンソールからの入力をバッファリングして、出力するプログラムは以下の通り。
STRSIZE より大きい入力(この例では4文字)が来ても大丈夫なことを確かめてみて。
あと、今、酔っているから、間違ってたらゴメンね♪

#include <stdio.h>
#include <stdlib.h>
#define STRSIZE 4
typedef struct _Data{
char string[STRSIZE + 1];
struct _Data *next;
} Data;
main(){
int i;
Data *start=NULL, *now, *temp;
while( 1 ){
if( ( temp = (Data *)malloc( sizeof( Data ) ) ) == NULL ){
printf( "memory run out!\n" );
break;
}
temp->next = NULL;
fgets( temp->string, STRSIZE, stdin );
if( start == NULL )
start = temp;
else
now->next = temp;
now = temp;
0712デフォルトの名無しさんNGNG
9の9乗の9乗の計算をお願いします

  9
 9
9

9^(9^9)
0713続きNGNG
for( i = 0; i < STRSIZE; i++ ){
if( temp->string[i] == '\n' ){
for( now = start; now != NULL; now = now->next )
printf( "%s", now->string );
break;
}
}
if( temp->string[i] == '\n' )
break;
}
for( now = start; now != NULL; now = temp ){
temp = now->next;
free( now );
}
return 0;
}
0714684=692NGNG
あっ、挟まれた(笑)。
711→713と続いてるから。
0715684=692NGNG
>>712
math ヘッダをインクルードして、pow( 9, pow( 9, 9 ) ) でいいと思う。
0716715NGNG
>>712
ゴメン、pow は double を取るから、キャストし直しといて♪
0717デフォルトの名無しさんNGNG
9^9^9は時間がかかるので9^9^3をやってみた
43932850369646432982977478265707271205801030817712671062167669775046634474476402
97733014126124825637294350648543542990955703795034525158532385201827409673987465
03532324400000659505126023955913142968176998364877699089666171297275956245407453
03319016864489485057634649269145869517428178955799492360778346148642644861766707
63939011044773249826312976410342770938186928234886034262794736743689436092688717
93467206677285688478458498235002859256706389043030847945506577080623430066283504
39758378904424542958598296457177460586846616037956743272570412126094093934321790
59758473650963158721532409698823634353634497752543930103682673439704262308013902
50903399147001650831878665172798468587509747439118815689
0718デフォルトの名無しさんNGNG
>>712
#include <math.h>
#include <stdio.h>
int main()
{
double x,f;
x = pow(9,9)*log(9)/log(10); /* 9^(9^9) = 10^((9^9)*ln(9)/ln(10)) */
f = fmod(x,1);
printf("9^(9^9) = about ");
printf("%fe+%.0f\n", pow(10,f), x-f); /* 10^x = (10^f)*(10^(x-f)) */
return 0;
}
0719デフォルトの名無しさんNGNG
質問させてもらいます。

整列アルゴリズムの二分挿入法を、
配列を使わずにポインタのリストで実現するという課題なんですが、
比較する要素をリストから探し出す度に先頭要素から見ていかなきゃならんので、
実行時間がめちゃくちゃ長くなってしまうんです。
(整列するデータは全て数字、数は10万個)

このうざったい要素探索処理を高速化したいんですが
何か良策はないでしょうか?
0720デフォルトの名無しさんNGNG
>>719
CPUとか変えれば・・・
0721C勉強中・・・NGNG
>>625
625でやっていただいたプログラムを改良しなくてはならなくなりました・・・
どこが悪いですかね?教えてください↓
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=111&fi=no
0722デフォルトの名無しさんNGNG
>>721
動かないから、改良するの?
0723639NGNG
>>721
それ私が書いたプログラム…。しかも、あなた宛に…。
0724C勉強中・・・NGNG
>>721
コンパイルもできるのですが、
最後の表示で、SubjectとTeacherが表示できないのです・・・
改良というか拡張です
Cはまだ勉強不足で原因がいくら考えても出てこなく、デキル人に見てもらおうかと
なんとかなりますかね?よろしくお願いします。
0725C勉強中・・・NGNG
>>723
あなたでしたか!とてもお世話になりました!
本当に感謝しています。
これ原因はどこでしょうか?
0726639NGNG
>>725
いや、だからね、あなたの張ったリンクが私のプログラムで、悪いところは無いはずなの。
あなたのプログラムはこれだよね?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=112&fi=no
0727C勉強中・・・NGNG
あっ!申し訳ありませんm__m なれないもので・・・ そうです、書いていただいたプログラムはちゃんと動き、感激しました。
本当に失礼しました
0728C勉強中・・・NGNG
そうです。間違った書き込みを貼り付けてしまいました・・・
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=112&fi=no
が正しいです
0729639NGNG
>>728
そのソースをコピペしてコンパイルしたけど、あなたの言っているのと違う結果になった。
No と Point しか表示されない。私のコピペミス? それとも、>>724で言っているのは間違い?
0730C勉強中・・・NGNG
あれ?こちらでやるとNameは出るのですが。。。
おかしいな・・・
もう一回今やってみます
0731C勉強中・・・NGNG
Nameでました。
前略こんな感じです↓

S028 Maeda 73
S029 Ogawa 85
S030 Okada 92
0732C勉強中・・・NGNG
書き込むとNameとPointの感覚は1スペに見えますが、実際の画面では3スペースあります
0733639NGNG
>>731
やっぱりこっちは Name が出ない。とすると、こりゃかなり厄介だな(苦笑)。
0734C勉強中・・・NGNG
うーん、なんででしょうかね・・・
困った・・・
コンパイルの環境はなんですか?
こちらは学校のUNIXサーバなんです
でもこれはこっちで勝手にを加えた部分が悪いでしょうから、見ていただいて、おかしいと思うところがあれば・・・
結構SubjectのIDがC001から順に並んでいなく、C010とか飛んでいる部分がネックになるのでしょうか
0735デフォルトの名無しさんNGNG
>>719
二分挿入法(二分探索木の挿入)を使うのなら、
データ構造もリストではなくツリー(二分木)であるべきではないのか
リストを使うなら、リストの末尾の要素を取得した時点で先頭から
逐次探索していた方が早いのでは(循環リストなら話は別)

課題が「ポインタのリストを使って」ということならばデータ構造の変更はできないが
0736639NGNG
>>734
ゴメン、ファイル名間違って保存してた(笑)。これで Name はひょうじされたぞ!(笑)
で、当初の問題が残ったわけだが(笑)。
ちなみにこっちの環境は XP home に bcc32。
0737C勉強中・・・NGNG
>>736
そうですか、少し安心しました。
環境の違いで結果が変わっては聞けるもののきけなくなってしまいますからね(汗)
その環境ならおそらく全然結果に変わりはなさそうですね。
0738639NGNG
>>737
ちょっと分かった。
関数 read_c で Subject と Teacher を読み込む前のフラグが立ってない。
0739C勉強中・・・NGNG
>>738
そのフラグというものの概念が実はわからないのでそのあたりは自分でいじれなかったんです・・・
そのほかの部分で納得するのに、昨日の昼からはまってて
もう体が言うことを聞かない状態です><
そのフラグだけで解決できるものですか?
0740639NGNG
ちょっとキタ!
�@関数 read_c の sscanf を以下のように変更。
sscanf(linebuf,"%s %s %s %s",buf[0],buf[1],buf[2],buf[3]);
�Aその6行下(else if の最後の項)を
else if(strcmp(buf[j],"Credit")==0)i[3]=j+1;
と変更。

これで実行するとちゃんと表示される! が、異常終了する(笑)。
0741C勉強中・・・NGNG
>>今こっちでもやってみます
0742C勉強中・・・NGNG
あれれ?今度はこっちでNameが表示されない(笑) 確認します
0743625NGNG
何か面倒な事になってるようで…
で、正しく修正したけどいる?
0744C勉強中・・・NGNG
やはりNameがでないで2スペースになってる・・・そっちはNameもしっかりでてますよね?
0745C勉強中・・・NGNG
>>743
是非ほしいです!こんな短時間で驚きました。。。本当に感謝です!
0746639NGNG
>>744
Name もでてる。調査によると、read_c の strcpy のあたりで異常が…。

>>743
お、作者登場! やっぱり作者が一番詳しいからね(笑)。
0747625NGNG
ちなみ、あのフラグは
No Name Address Age
となってる並びを
Name Age No Address
とかって入れ替えても(勿論それに続くデータも)動くようにしてあるだけで
何と言うか趣味で付け足しただけだから
分からないなら、削ってしまった方が良いかもよ
0748639NGNG
…見切ったッッ!!!

define されている BSIZE が小さい(笑)。大きくしたらちゃんと出たぞやっほうッ!
0749C勉強中・・・NGNG
こんな時間まで皆さんお疲れ様です。昨日の昼からはまってたものがようやく解決できそうです。みなさんには本当に感謝しています!
0750C勉強中・・・NGNG
BSIZE?そこが原因だったとは・・・ さすがです
0751625NGNG
ほい
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=113
0752639NGNG
>>747
私のプログラムでも、趣味で可変引数関数なんか作ってやがります(笑)。
0753デフォルトの名無しさんNGNG
↓はマジで書いてんすか?
・fgets(linebuf,sizeof(buf),fp);
0754625NGNG
見逃してた…
read_c()の中のwhileを↓に訂正して
while(flag&&!feof(fp))
{
  fgets(linebuf,sizeof(buf),fp);
  sscanf(linebuf,"%s %s %s %s",buf[0],buf[1],buf[2],buf[3]); /* この行 */
  j=atoi(buf[i[0]-1]+1)-1;
  strcpy(Data_b[j].Subject,buf[i[1]-1]);
  strcpy(Data_b[j].Teacher,buf[i[2]-1]);
  Data_b[j].Credit=atoi(buf[i[3]-1]);
}
0755C勉強中・・・NGNG
結果が
前略
S0029 KaouzouRikigaku Fujii 85
S030 KousakuKikai Nishimura 92
て感じでNameが出ないのは自分だけですか?
本来
S029 Ogawa KouzouRikigaku Fujii 85
となるのですが・・・?
0756639NGNG
>>755
私はちゃんと出るけど…。うっかりキーを触っちゃって、ソースが変更されたのかな?
0757625NGNG
>>753
変数名を変えた時に直すの忘れてたね…(read_a〜cまでコピペで作ったし…)
つー訳で、全ての
fgets(linebuf,sizeof(buf),fp);
を
fgets(linebuf,sizeof(linebuf),fp);
に直して下さい
0758C勉強中・・・NGNG
でました!大丈夫です。データファイルのほうがおかしくなっていただけでした!
お騒がせしました。
0759625NGNG
>>755は>>757に訂正しても駄目?
0760639NGNG
>>758
よかったね♪ そうそう、今までのレスを読み返して。細かい修正がいくつかあるみたいだから。
じゃあ、私「目がテン」見るから。じゃ〜ね♪
0761C勉強中・・・NGNG
ありがとうございました!本当に(涙)とても勉強になりました。これほどまじめに取り組んだのは初めてくさいです。
0762デフォルトの名無しさんNGNG
>>758
つーかそういうデータはバイナリファイルの決められたサイズで保存してそれを
読み込めば簡単なのでは。
0763C勉強中・・・NGNG
>>762
それも考えようとしたのですが、今回のやっていただいた可変長のスペース区切りのほうが頭に入ってきやすかったもので・・・
友人でそちらの方法でやっているひともいるようです。
0764625NGNG
>>761
余力があるなら、良く考えて、必要無い機能を削って
read_a〜c の関数の同じ処理の部分を、1つの関数にまとめた方が良いよ
0765C勉強中・・・NGNG
>>764
なるほどそうしたほうが見栄えよくなりますね。アドバイスありがとうございます。昨日から寝てないもので、休んでから挑戦してみます。提出は月曜ですからまだ時間がありますので^^
0766デフォルトの名無しさんNGNG
>>765
んじゃ、がんばってね
0767デフォルトの名無しさんNGNG
>>608
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=114
0768698NGNG
>>701->>703
アドバイスありがとうございます。
ファイルの読み込みはなんとなくわかったのですが、2の工程は全然なんですけど。。。
>バッファ2で、#が出てくる始めの配列番号と#が連続で出てきた回数をカウントして
>バッファ1の中身を単語に切り分けていく
???ってかんじです。
すんません。

0769デフォルトの名無しさんNGNG
>>704, >>706
prog.exe < でかいファイル.dat
とやられて終わるだけ。

>>709
駄目。
君は、C とかの危ない言語は使わないほうが身のため。
VB とかにしときなさい。
0770608NGNG
>>699
windows2000 SP3
メモリ128MB
VC++6.0
です。
0771デフォルトの名無しさんNGNG
3Dマリオみたいなものを創りたいです。
とりあえず、プロトとして敵なし、マップをとことこ歩くのみの
バージョンを創りたいです。
0772_NGNG
http://homepage.mac.com/hiroyuki44/hankaku09.html
0773771NGNG
一応、言語はC/C++を想定してます。
C++は参考書で知ってます。
でもマリオは一部のアセンブリ言語を除いて
C言語で書かれていると、昔、雑誌のインタビューで開発者が
言ってました。
0774デフォルトの名無しさんNGNG
独り言をここに書くのは止めて
0775デフォルトの名無しさんNGNG
10秒カウントダウンしてそれを毎回同じところに
表示するプログラムを作れと言われました。
はっきり言ってよく分かりません。
どなたかお願いします。
0776デフォルトの名無しさんNGNG
DOSで字を消すときは
&bだった気がする。
エスケープ記号のバックスペース。
あとは、time(),clock()のどっちかで、
時間とりながら、一秒ごとに打ち出す。かな。
0777719NGNG
遅レス(?)ですが、

>720
>CPUを変更
そいつは無理です。

>735
>二分木を使う
そうしたいのもやまやまなんですが、
課題にしっかり「リスト版の作成」と書いてあるのでお手上げです。

もう、あきらめます。
こんなバカな課題に付き合ってられません。
0778デフォルトの名無しさんNGNG
>>775
#include <stdio.h>
#include <time.h>
int main(){
time_t t1,t2;
int cnt=10;
system("cls"); printf("%d",cnt);
time(&t1);
for(;;){
time(&t2);
if(difftime(t2,t1) > 1.0){
system("cls"); printf("%d",--cnt);
if(cnt<=0) return 0;
t1 = t2;
}
}
return 0;
}
0779デフォルトの名無しさんNGNG
>>777
賢い人なら、あきらめずに二分木版をつくって、
その優位性をレポートにまとめて提出する。
0780778NGNG
Windowsじゃないと無理かな。
UNIXじゃ試してません。
UNIXなら"cls"を"clear"に変える。
0781デフォルトの名無しさんNGNG
>>775
授業でならわなかったの?
0782デフォルトの名無しさんNGNG
っていうか、

タ イ マ ー は 環 境 依 存
コ ン ソ ー ル 関 係 も 環 境 依 存

以上。
0783デフォルトの名無しさんNGNG
>>777
二分木だってリストの一種だぞ。
線形リストとは書いてないんだろ?
0784デフォルトの名無しさんNGNG
>>782
clock使えば10秒カウントはできないわけではない。
0785180NGNG
>>180の技を再び
#include <stdio.h>
#include <time.h>
#define DOS_TATE_SIZE 25
#define WAIT 10
#define Y 10
#define X 10
int main(void)
{
int i,t,count;
for(count=WAIT;count>=0;count--)//時間まで
{
for(i=0;i<DOS_TATE_SIZE;i++)puts("");//画面クリア
for(i=0;i<X;i++)printf(" ");//xの位置の移動
printf("%02d:%02d",count/60,count%60);//時間の表示
for(i=0;i<DOS_TATE_SIZE-Y;i++)puts("");//yの位置の移動
for(t=clock()/CLOCKS_PER_SEC;clock()/CLOCKS_PER_SEC-t==0;){}//1秒待つ
}
return 0;
}
0786デフォルトの名無しさんNGNG
celeron 1.7GHz のwin2k でもスクロールがかろうじて見える。
でもそれはそれでなんかカコイイ
0787デフォルトの名無しさんNGNG
> puts("");
putchar('\n');でいいだろ
0788デフォルトの名無しさんNGNG
どっちでもいいだろ。
0789デフォルトの名無しさんNGNG
つーか、CPUを100%食うタイマー(略
0790675NGNG
>>711
どうもありがとうです あの後わからなくてフテ寝決め込んで
起きてみたら すばらしいソースが早速つかわせてもらいます
0791デフォルトの名無しさんNGNG
>681 名前: 675 投稿日:03/07/13 00:11
>>>680
>仕様がgetsなんですよTT

じゃなかったのか?
0792デフォルトの名無しさんNGNG
>>789
WinMainの中で無限ループするご時世ですが、なにか?
0793719NGNG
>>779
賢い人になるためにしこしこがんばります。

>>783
課題には線形リストの例が載ってたので、
どうやら線形リストを使うことを推奨しているようです。


とりあえず、みなさんのご忠告通りに二分木版を作ろうと思います。
質問に答えてくれてありがとうございます。
0794デフォルトの名無しさんNGNG
>>792
CPU100%になんの関係が・・・
0795デフォルトの名無しさんNGNG
timeやclockを使ったプログラムの例で1番簡単なのを
教えてください。
使い方を知りたいです。
0796デフォルトの名無しさんNGNG
#include <time.h>
time(NULL);
clock();
0797デフォルトの名無しさんNGNG
どういう風に動くんですか?
0798デフォルトの名無しさんNGNG
>>792
>WinMainとか〜

環境依存。ヴォケが。
0799デフォルトの名無しさんNGNG
>>784
どうやるんですか?
0800デフォルトの名無しさんNGNG
>>698
やはり手順2の意味が良くわからないですけど、たぶん1度ファイルから読み込んだ
データをバッファ1内で直接扱うのではなく、別バッファ2で'#'と' 'で置き換えて
わかりやすく区別します(>>702参照)。そして連続で#が出てくる最初の配列要素番号とその長さを
取得し、その情報をバッファ1に適用することで実際の単語を取り出すのだと思います。
これはバッファ2内で単純化してから考えるということだと思います。あとバッファ1内の
内容を直接いじって下手にデータ破壊をしないようにしているのだと思います。
自分が処理の中に手順2を含むのであればそう考えますがどうでしょうか?
説明が下手ですいません。他の方ならどう考えるのでしょうか?
0801デフォルトの名無しさんNGNG
C言語で、5回勝負の先に3勝したほうの勝ちとなるジャンケンゲームを作り、
色々な戦略(たとえば1順番に出す:2:ランダムに出す など)を一つの関数として定義して,戦略の優劣を評価するプログラムを
教えてください。
0802デフォルトの名無しさんNGNG
>>800
それ以外考えられないと思う。
ただこの場合#は1個でも単語として成立するんだろ?

手順2が無いほうが絶対楽だけど課題じゃしょうがないわな。
0803デフォルトの名無しさんNGNG
>>778
一秒ごとに
cls: not found
が表示されますた
winでgcc
0804デフォルトの名無しさんNGNG
時間のやつがよく出てて、それが本当に宿題か分かんないけど、
>>785じゃ遺憾の?非環境依存だから、どのマシンでもそれなりに動くし。
ウインドウズなら、猫でも分かるの
http://www.kumei.ne.jp/c_lang/intro/no_59.htm
とかを調べてみるといいよ。ただ、windows.hは永井意味の分からん英語が
おっぱおあるから、初心者だと難しいかも。
98、Meなら、エスケープシーケンスと言うのがある。グーグルで見ると
山ほど乗ってるよ。printfにそのまま記述できるから猫のより簡単だけど、
2000、NT(ANSI.SYSが無い)では動かないらしい。
0805デフォルトの名無しさんNGNG
2つの整数を入力し、a/bの値を四捨五入して小数第2位まで表示するプログラム。
ただし%.2fはつかわずに自力で計算すること。

わからないのでよろしくお願いします。
0806デフォルトの名無しさんNGNG
>>805
#include <stdio.h>
#include <stdlib.h>
int main(){
int a,b;
div_t ans;
printf("*** a/b を計算します(小数第一位を四捨五入) ***\na = ");
scanf("%d",&a);
printf("a = ");
scanf("%d",&b);
ans = div(a,b);
printf("a/b = %d", (ans.quot>ans.rem*2)?ans.quot:ans.quot+1);
return 0;
}
0807806NGNG
ごめん間違えた、小数第2位か。
0808デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=116
このソースにコメントを付けて説明できるようにしろといわれたのですが、
よく分からないのでお願いします。構造体の説明もです。
すみません。
0809デフォルトの名無しさんNGNG
WinMainかよ(;´Д`)
0810デフォルトの名無しさんNGNG
>>809
すみません。無理っすか?
0811デフォルトの名無しさんNGNG
コメントをつけろという宿題は現在受け付けておりません。
0812デフォルトの名無しさんNGNG
>>810
ちょとやってみる
0813デフォルトの名無しさんNGNG
マジっすか?
すみませんでした。
気が向いたらぜひお願いします。
最後の希望age
0814デフォルトの名無しさんNGNG
>>807
取り組みありがとうございます。
小数2位のほうでもわかるでしょうか?
0815806NGNG
>>805
直した。

#include <stdio.h>
#include <stdlib.h>
int main(){
int a,b;
div_t tmp1,tmp2,tmp3;
printf("*** a/b を計算します(小数第3位を四捨五入) ***\na = ");
scanf("%d",&a); printf("b = "); scanf("%d",&b);
tmp1 = div(a,b);
tmp2 = div(tmp1.rem * 100, b);
tmp3 = div(tmp2.rem * 10, b);
if(tmp3.rem >=5) ++tmp2.quot;
if(tmp2.quot >= 100){++tmp1.quot;tmp2.quot%=100;}
printf("a/b = %d.%d",tmp1.quot,tmp2.quot);
return 0;
}
0816デフォルトの名無しさんNGNG
http://www.abc-cgi.com/rank/ranklink.cgi?id0=r1201&id=mercury
0817デフォルトの名無しさんNGNG
>>815
すばやい対応ありがとうございました!
0818806NGNG
ごめん、ちょっとバグってる。
0819806NGNG
11行目が間違ってた。正しくは。
if(tmp3.quot >=5) ++tmp2.quot;
0820デフォルトの名無しさんNGNG
#include<stdio.h>

void main()
{
int a,b;
printf("*** a/b を計算します(小数第3位を四捨五入) ***\na = ");
scanf("%d",&a); printf("b = "); scanf("%d",&b);
printf("a/b = %d.%d",(1000*a/b+5)/1000, (1000*a/b+5)/10%100 );
}
0821806NGNG
>>805
まだだめだった、たびたびすまんす。

#include <stdio.h>
#include <stdlib.h>
int main(){
int a,b;
div_t tmp1,tmp2,tmp3;
printf("*** a/b を計算します(小数第3位を四捨五入) ***\na = ");
scanf("%d",&a); printf("b = "); scanf("%d",&b);
tmp1 = div(a,b);
tmp2 = div(tmp1.rem * 100, b);
tmp3 = div(tmp2.rem * 10, b);
if(tmp3.quot >=5) ++tmp2.quot;
if(tmp2.quot >= 100){++tmp1.quot;tmp2.quot%=100;}
printf("a/b = %d.%02d",tmp1.quot,tmp2.quot);
return 0;
}

これでいいはず。すれ汚し須磨祖。
0822806NGNG
まだ改良できるな。でもやめときます・・・。
0823デフォルトの名無しさんNGNG
>>822
ご丁寧にありがとうございます。
改良できるとこはしてくださるとありがたいですよ(笑)
0824806=822NGNG
んー。
int をunsigned longにしたり、
tmp2 = div(tmp1.rem * 100, b);
ここが100倍しているけど10倍ですむようにすれば、もう少し扱える数値範囲が増える。

まぁ究極は入力を文字列として受け取って、多倍長処理を実装するわけだが。
やる?
0825デフォルトの名無しさんNGNG
ZOO ZOO C
0826デフォルトの名無しさんNGNG
>>808
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=117
こんな感じになった
0827806=822NGNG
あ、しまった。入力は正の数じゃなくて整数か。
じゃ、まだだめだ。

#include <stdio.h>
#include <stdlib.h>
int main(){
int a,b,sig=1;
div_t tmp1,tmp2,tmp3;
printf("*** a/b を計算します(小数第3位を四捨五入) ***\na = ");
scanf("%d",&a); printf("b = "); scanf("%d",&b);
if(b==0){printf("bには0以外の整数を入力してください。\n");return 0;};
if(a<0){a*=-1;sig*=-1;}
if(b<0){b*=-1;sig*=-1;}
tmp1 = div(a,b);
tmp2 = div(tmp1.rem * 100, b);
tmp3 = div(tmp2.rem * 10, b);
if(tmp3.quot >=5) ++tmp2.quot;
if(tmp2.quot >= 100){++tmp1.quot;tmp2.quot%=100;}
printf("a/b = %d.%02d",tmp1.quot*sig,tmp2.quot);
return 0;
}

ついでにb==0のエラー処理もつけた。
0828808NGNG
>>826
ありがとうございます。
すごくきれいです。
印刷してとっておきます
0829よし@C++NGNG
>>705です。遅くなりましたが、教えてくれた方々、どうもありがとうございます!
0830デフォルトの名無しさんNGNG
>>826
そんなにコメント書くなんてお疲れ。
でも、実際、俺はうざいな〜。
0831デフォルトの名無しさんNGNG
>>826
スゲー、入門書も真っ青だ
参考になります
0832デフォルトの名無しさんNGNG
#include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR lpCmdLine,
int nCmdShow){
int rect;
for(rect=0;rect<=10;rect++){
MessageBox(NULL,TEXT("Hello,world"),
TEXT("はろー"),MB_OK);}
return 0;
}
0833デフォルトの名無しさんNGNG
2つの整数をユーザーレベルで受け取り、ユークリッドの互除法によって最大公約数を求めるプログラムを作成せよ。
**要求仕様**
1.最終的な結果として”xとyの最大公約数はzである。”という趣旨の結果表示を行うこと。
2.最大公約数が求められないような値が入力された場合には、(ユーザ入力により負の値が入力されたような想定)
  警告を発し、再入力を促すようにせよ。

この問題の2番目がよくわかりません。よろしくお願いします。
0834デフォルトの名無しさんNGNG
>>833
じゃあ、2のところだけ。

main(){
int x,y;
while(1){
printf("input x y >>");
scanf("%d %d",&x,&y);
if(x<0){printf("xの値が不正です。");continue;}
if(y<0){printf("yの値が不正です。");continue;}
break;
}
}
0835あ☆NGNG
テスト
0836てすとNGNG
dsfs fds fs
0837833NGNG
>>834
ありがとうございます!
0838デフォルトの名無しさんNGNG
現在のポインタn がNULL でないならば、score の値と入力された得点を比較して、
もし入力された得点が大きいならばポインタを挿入し(関数insert() で行う)、そうでなければ
再帰的に先に進むように、関数ordered_append() を完成させる。

#include <iostream.h>
struct node {
int num;
int score;
struct node *next;
};
typedef struct node Node;
Node *ordered_append(Node *, int, int);
Node *insert(Node *, int, int);
void show(Node *);
void deletelist(Node *);
void main()
{
Node *root = NULL;
int num, score;
cout << "番号: ";
cin >> num;
0839838NGNG
cout << "得点: ";
cin >> score;
while(num >= 0) {
root = ordered_append(root, num, score);
cout << "番号: ";
cin >> num;
cout << "得点: ";
cin >> score;
}
cout << "番号\t 得点\t 成績\n";
show(root);
deletelist(root);
}
Node *ordered_append(Node *n, int num, int score){
(不明部分)
}
Node *insert(Node *n, int num, int score){
(不明部分)
}
(略)
0840デフォルトの名無しさんNGNG
フルカラーBMPカラーバー画像を生成・保存するプログラムを作成せよ。
ていう宿題が出されました。いろいろ調べたんですが、よくわかりません。
よろしくお願いします。
0841833NGNG
5つの英単語をユーザレベル入力させてそれぞれの単語が何文字で構成されているか、
さらに合計で何文字あったのかを数え上げて表示するプログラムを作成せよ。
**要求仕様**
例)”cat”は3文字
”dog”は3文字
”monkey”は6文字
”rabbit”は6文字
”panda”は5文字

合計で23文字

と表示されるようにせよ。

という問題なんですがよくわかりません。すいませんがお願いします。
0842698NGNG
>>800>>802
ありがとうございます。
でも、ソースがわからんです。簡単に教えていただけませんか?
別に#に置き換えてのじゃなくて普通に読み込むだけのでもかまわないので教えていただけませんか?

0843デフォルトの名無しさんNGNG
>>841

#include <stdio.h>
#include <string.h>
int main()
{
char a[4096];
int s=0,d=5,f;

while(d--){
fgets(a,sizeof a,stdin);
f=strlen(s)-1;
printf("\"%s\"は%d文字\n",a,f);
s+=f;
}
printf("\n合計で%d文字\n",s);

return 0;
}
0844デフォルトの名無しさんNGNG
>>843
文字数は半角ではなく全角でお願いしまふ
0845デフォルトの名無しさんNGNG
>>844
お、、、おーけい。
0846デフォルトの名無しさんNGNG
#include <stdio.h>
#include <string.h>

void g(const char *);

int main()
{
char a[4096],k[100];
int s=0,d=5,f;

while(d--){
fgets(a,sizeof a,stdin);
f=strlen(a)-1;
a[f]='\0';
sprintf(k,"%d",f);
printf("\"%s\"は",a);
g(k);
printf("文字\n");
s+=f;
}
sprintf(k,"%d",s);
printf("\n合計で");
g(k);
printf("文字\n");

return 0;
}
0847デフォルトの名無しさんNGNG


void g(const char *h)
{
char *j[]={"0","1","2","3","4","5","6","7","8","9"};
for(;*h;h++)
printf("%s",j[*h-'0']);
}
0848846,847NGNG
>>841
これで
0849846,847NGNG
printf("%s",j[*h-'0']); は printf("%s",j[(*h-'0')%10]); に
0850デフォルトの名無しさんNGNG
全角で表示するっていうのも勉強なんだろうか。
0851デフォルトの名無しさんNGNG
>>698
話の流れが掴めないんだけど、結局、何が分からないの?
0852705NGNG
>>705です。
>>708さん改めてありがとうございました。
でも、funcっていうの(関数?)を習ったことがないんですが、他の関数構造使ったらどうなるんでしょうか?
voidやreturnは習いました。
0853デフォルトの名無しさんNGNG
func() は自分で作った関数。
0854705NGNG
そうなんですか。
これまでに習得したコマンドを使用することって書いてあるんですが、自分で作ったその関数ならば通用すると思いますか?
0855デフォルトの名無しさんNGNG
>>852
あなたは今とても馬鹿なことを言っています。
はっきり言ってみんな呆れています。
知らないにもほどがあります。
もう少し勉強してからきてください。

日本語が通じていません。
0856705NGNG
どうもすいません。勉強不足は反省しております。
0857デフォルトの名無しさんNGNG
>>854
関数の作り方と、if文とreturn習ったならおk
最後のreturn 0はmainの最後につけたほうがよさげだなぁ
0858705NGNG
わかりました!どうもありがとうございます。
迷惑をかけた皆さん、ホントごめんなさい。
0859_NGNG
http://homepage.mac.com/hiroyuki44/
0860833NGNG
>>843,>>845-849
ありがとうございました。
しかし>>844は誰なんだろう?
0861デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define NUM 1000
#define MAX 20

int main(void) {
int data[MAX] = {0};
int sum = 0;
int i;

srand((unsigned int)time(NULL));

for(i = 0 ; i < NUM ; i++) {
data[rand() % MAX]++;
}

for(i = 0 ; i < MAX ; i++) {
printf("%2d : %5d\n", i + 1, data[i]);
sum += data[i];
}

return 0;
}
0862デフォルトの名無しさんNGNG
>>861
何?
0863デフォルトの名無しさんNGNG
浮動小数点変数が与えられた時、小数以下n桁に四捨 五入した
文字列を返すような仕組みの関数ってわかりませんか?
完敗です(・・;)
0864デフォルトの名無しさんNGNG
>>863
sprintf()
0865デフォルトの名無しさんNGNG
>>863
四捨五入だったかどうか忘れたけど、sprintfの%fで精度を与えればできたかも。
0866デフォルトの名無しさんNGNG
浮動小数点変数を a に、桁数を n に入力して、
char* round(double a, int n)
この関数に、小数以下n桁に四捨五入した文字列を返すような仕組みを
作らなければいけないのですが、どうもその仕組みがうまくつかめない
もので。。
0867デフォルトの名無しさんNGNG
>>866
/* 戻す領域は再利用されるので呼び出し側での取り扱い注意 */
char *round(double a, int n)
{
static char sBuf[100];
sprintf(buf, "%.*f", n, a);
return sBuf;
}
0868デフォルトの名無しさんNGNG
>>867
あああ、sprintf()だけ書いたときの名残が・・・
sprintf(sBuf, ...)
ってことで。
0869デフォルトの名無しさんNGNG
>>867
rount(1.005, 2)やってみ
0870デフォルトの名無しさんNGNG
間違えた
round(1.005, 2)
0871JK北野NGNG
標準関数printfは表示桁数を変数で指定できないため、
それを可能にする関数char*printint(int n,x)を作りなさい。
ここで、変数nは表示桁数、変数xは出力したい数値を表すものとする。
なお、表示桁数に満たない数の頭の部分は空白で埋めるものとする。
また、得られた処理結果はprintf("%s\n",printint(n,x));で確認できる。
という問題なのですが、ご迷惑でなければ、どうにか
お力添えをお願い致します。
0872838NGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=118

全文載せました。誰か解答お願いします・・・
0873デフォルトの名無しさんNGNG
>>871
表示桁数を超える数の時はどうする?

ていうか、これじゃダメなのか?
printf("%*d\n", n, x);
0874デフォルトの名無しさんNGNG
>>871
> 標準関数printfは表示桁数を変数で指定できないため、

できます。
0875デフォルトの名無しさんNGNG
char *printint(int n,int x)
{
static char buf[1024];
sprintf(buf,"%*d",n,x);
return buf;
}
0876デフォルトの名無しさんNGNG
>>869
本質的でない問題の解決案。
#include <stdio.h>
#include <float.h>
/* 戻す領域は再利用されるので呼び出し側での取り扱い注意 */
char *round(double a, int n)
{
static char sBuf[100];
sprintf(buf, "%.*f", n, (1 + DBL_EPSILON) * a);
return sBuf;
}
0877デフォルトの名無しさんNGNG
浮動小数点aが与えられた時、少数以下n桁に四捨五入した文字列を返す関数を定義しなさい。
  char* round(double a, int n)
お願いします。
0878デフォルトの名無しさんNGNG
浮動小数点aが与えられらたとき、少数以下n桁に四捨五入した文字列を返す関数を定義しなさい。
   char* round(double a, int n)
お願いします。
0879_NGNG
http://homepage.mac.com/hiroyuki44/
0880デフォルトの名無しさんNGNG
1整数型add
整数型mul それぞれの構造体を定義する
文字型typ
20~99までの整数について
X[n]addにはn+n
X[n]mulにはn*n
X[n]typには 奇数なら”O”偶数なら”E”
3nが5から15の場合の値を表示する
初歩的だとは思うんですけどまったくわかりません。おしえてください。おねがいします
0881デフォルトの名無しさんNGNG
1整数型add
 整数型mul それぞれの構造体を定義する
 文字型typ
2 99までの整数について
X[n]addにはn+n
X[n]mulにはn*n
X[n]typには 奇数なら”O”偶数なら”E”
3 Nが5から15の場合の値を表示する
初歩的だとは思うんですけどまったくわかりません。おしえてください。おねがいします
0882デフォルトの名無しさんNGNG
>初歩的だとは思うんですけどまったくわかりません

俺こういう言い方嫌い
何をもって初歩的だと思ったわけ?わからないくせに
0883デフォルトの名無しさんNGNG
ここのエロビデオ生活にサヨナラできる方法はためになるよ。
Hなサイトなので、Hな人だけ見てみて♪(´∀` )
http://www12.ocn.ne.jp/~carlowen/beautiful/
0884デフォルトの名無しさんNGNG
>>881
int main(void)
{
static const struct {
int add;
int mul;
char typ;
} X[] = {
{0, 0, 'E'},
{2, 1, 'O'},
{4, 4, 'E'},
{6, 9, 'O'},
...
{198, 9801, 'O'},
};
int ic;
for (ic = 5; ic <= 15; ic++) {
printf("値\n");
return 0;
}
0885デフォルトの名無しさんNGNG
>>881 すみませんでした
>>884 ありがと−ございます
0から99の数字ってすべて入力するのですか?
うごかなかったので…
0886デフォルトの名無しさんNGNG
以下に0から99の数字をバイナリ→BCD、バイナリ→文字コードに変換する
プログラムがある。そのうち二つの関数(bcdhen(), aschen())を作成しなさい。
誰か、
おねがいします。。
#include <stdio.h>
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long LONG;
typedef char SBYTE;
typedef short SWORD;
typedef long SLONG;
BYTE datatbl[100],/* 初期データ(バイナリ) */
bcdtbl[100],/* BCD データ */
asctbl[100];/* ASCII データ */
void bcdhen(void);
void aschen(void);
void main(void)
{
WORDcnt;
/* バイナリデータ作成 */
for(cnt = 0; cnt < 100; cnt++)
datatbl[cnt] = cnt;
bcdhen();
aschen();
}
/* バイナリ → BCD 変換 */
void bcdhen(void){}
/* バイナリ → 文字コード変換 */
void aschen(void){}
0887デフォルトの名無しさんNGNG
void bcdhen(void) …ひどい問題だな
0888デフォルトの名無しさんNGNG
グローバル変数濫用という悪い癖をつけそうだなw
0889デフォルトの名無しさんNGNG
10で割ってシフト。
0890878NGNG
誰かお願いします。
0891デフォルトの名無しさんNGNG
>890
sprintf
0892デフォルトの名無しさんNGNG
sprintfって四捨五入してくれるの?
0893デフォルトの名無しさんNGNG
sprintfで小数n+1までの文字列をつくる。
で四捨五入。
0894デフォルトの名無しさんNGNG
0.00005とか足してn桁表示の方が楽かな。
0895デフォルトの名無しさんNGNG
ナルホド
0896878NGNG
できればプログラムを書いてほしいのですが‥。
お願いします!
0897デフォルトの名無しさんNGNG
char buf[7834], buf2[36798];
int i;
double x;
for (x = 5; i < n; i++, x /= 10);
sprintf(buf, "%%.%df", n);
sprintf(buf2, buf, a+x);
0898デフォルトの名無しさんNGNG
>>897
馬鹿。過去ログ読めよ。
0899デフォルトの名無しさんNGNG
>>898
馬鹿。釣られるな。
0900デフォルトの名無しさんNGNG
誰か作ってください。

例えば変数の値が10〜20の場合その変数を表示したときにその数字が黄色色に1〜9の場合赤色になるプログラムを誰か作ってください。
御願いします。
0901900NGNG
コンパイラーはフリーのbcc32です。
0902JK北野NGNG
みなさんありがとうございます!!
こんなにたくさんの人が協力してくれるなんて感動です。。。
0903デフォルトの名無しさんNGNG
if(i>=10&&i<=20)
printf("<font color=\"yellow\">%d</font>\n",i);
else if(i>=1&&i<=9)
printf("<font color=\"red\">%d</font>\n",i);
0904900NGNG
誰かまじめに答えてください。
0905デフォルトの名無しさんNGNG
>>900
コンソール関連は環境依存だ。ヴォケが。
0906デフォルトの名無しさんNGNG
>>904
>>903は一つの有意義な回答なのだが。
君が提示せずに、誰が君の利用したい環境を推測し得ようか。
0907デフォルトの名無しさんNGNG
>>885
>>884は問題を的確に提示できない君への皮肉だ。
0908900NGNG
Windows Meです。
0909デフォルトの名無しさんNGNG
 三つの複素数α、β、γの実数部、虚数部の値(実数)をそれぞれ入力して、
(α+γ)(β+γ)を求めて表示せよ。
 ただし、複素数を、実数部と虚数部に対応するメンバで構成される構造体
として表し、複素数の加算用関数c_add()と乗算用関数c_mul()を作成し、
これを利用すること。
 これらの関数は、sとtを複素数を表す構造体としたとき、c_add(s,t)、
c_mul(s,t)と呼び出すと、それぞれ戻り値として、sとtを加算、または乗算
した結果である複素数の構造体を返すものとする。
0910デフォルトの名無しさんNGNG
>>908
どういう出力イメージを持っているんだ?
0911デフォルトの名無しさんNGNG
読み込んだテキストファイルの中から引数で指定した任意の文字列を検索して
その数を表示するプログラムなのですが、ここまではつくったんですが、検索の部分がどうしても
おかしいのです。なんとかなりませんでしょうか?
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
FILE *fp;
char ch;
int i=0, j=0, k=0;

if(argc!=3){

printf("使用法:<プログラム名> <ファイル名> <文字>\n");
exit(1);
}

if((fp = fopen(argv[1], "r"))==NULL){
printf("ファイルを開くことができません\n");
exit(1);

}
0912911NGNG
/* データ検索のルーチン */

while((ch = fgetc(fp)) != EOF){

if(ch==*argv[2]){
if(j==0)
j++;
}
if(j>=1){
if(ch==*(argv[2]+j))
j++;
}
if(*(argv[2]+j)=='\0'){
j=0;
i++;
}

/* データ検索のルーチン終了 */

0913911NGNG
}
if(i>1){
printf("%d個の ", i);
while(k<=j){
printf("%c", *(argv[2]+k));
k++;
}
printf("が見つかりました。\n");
}
else
printf("Not found\n");

fclose(fp);

return 0;
}
0914デフォルトの名無しさんNGNG
>>909
>>511に同じ問題が貼られているから、そこから読み直せ
0915デフォルトの名無しさんNGNG
>>911
ファイルの中身を単一のバッファに全て読み込んでstrstr
fseek,ftell,malloc,fread,strstr これらの関数を駆使して。
0916デフォルトの名無しさんNGNG
qsortつかえ
0917911NGNG
>>915
あ〜、さっぱり分からないですその辺の関数
そんな難しいんでしょうか?
0918915NGNG
>>911
検索するのは文字なのか?>>911の一行目には文字列と書かれているが。
0919911NGNG
一文字ずつ検索して文字列にするといった感じなんです
0920911NGNG
一文字目が一致したら二文字目みたいにしていくプログラムをfgetcで作ることになってるんですが…
完全に正常には動かなくて…今のままだとたまにおかしくなるんです
0921915NGNG
>>920
じゃあ事前に全て読み込むということはしてはいけないの?
0922911NGNG
fgetcで一文字ずつとのことなんです…
全部一気に読み込んで検索ならもう少し楽なのかもしれませんが
0923デフォルトの名無しさんNGNG
>>911
こんな感じでいいかな?
きれいじゃないし、エラー処理してないからその辺は適当に・・・。
あと、コンパイルしてないからエラーがあるかも。
/*  int find
    FILE* fp;ファイルポインタ
    char* lpsz;検索文字列
    戻り値:ファイル中に含まれる検索文字列の数
*/
int find(FILE* fp,char* lpsz)
{
    int i = 0,
        len = 0,    //検索文字列の長さ
        count = 0;  //カウント
    char c = 0;
    len = strlen(lpsz);//文字列の長さ取得
    do{
        for(i=0;i<len;i++){  //このforループ内で検索する
            c = fgetc(fp);
            if(c == EOF) break;  //終端なら脱出
            if(c != lpsz[i]) break; //一致しないと検索ループを抜ける
        }
        if(i == len) count++;   //もし、上のループをbreakせずに抜ければ検索文字列と一致
    }while(c != EOF);
    
    return count;
}
0924デフォルトの名無しさんNGNG
>>923
検索する文字列 "ab"
テキストファイル "aab"
だとカウントされないのでは。
0925911NGNG
>>924
俺が上で作ってるプログラムもそうなんです…abでaabだと文字列にならないので困ってます。
0926デフォルトの名無しさんNGNG
>>911
/* データ検索のルーチン */

while ((ch = fgetc(fp)) != EOF) {
if (ch == argv[2][j] || ch == argv[2][j = 0]) {
++j;
if (argv[2][j] == '\0') {
++i;
j = 0;
}
}
}

/* データ検索のルーチン終了 */
0927878NGNG
誰か回答お願いします。マジで分からない。
0928911NGNG
926さんありがとうございます。
ところで俺のプログラムはどこがまずかったのでしょうか?
argv[2][j]はどういう意味なんでしょうか?ポインタを配列に置き換えてるんですか?
0929911NGNG
926さん出来たら解説お願いしますm(__)m
0930923NGNG
>>924指摘サンクス
んじゃ、これでどうかな?

int find(FILE* fp,char* lpsz)
{
    int i = 0,
        len = 0,    //検索文字列の長さ
        count = 0;  //カウント
    char c = 0;

    len = strlen(lpsz);//文字列の長さ取得
    do
    {
        for(i=0;i<len;i++)  //このforループ内で検索する
        {
            c = fgetc(fp);
            if(c == EOF) break;         //終端なら返る
            if(c != lpsz[i]) break;     //一致しないと検索ループを抜ける
        }
        
        if(i == len){   //もし、上のループをbreakせずに抜ければ検索文字列と一致
            count++;
        }else{
            fseek(fp,-i,SEEK_CUR);//breakしたときはファイルポインタをiだけ戻す
        }
    }while(c != EOF);
    
    return count;
}
0931デフォルトの名無しさんNGNG
>>927
たぶん問題が悪い。
文字列として char* が戻り値なんて、ロクな問題じゃない。
0932923NGNG
あ〜、これじゃ
文字列:aaaaa
検索対象:aa
のときに戻り値が2になっちゃうね。

戻り値が4になるには
count++;
↓
count++;
fseek(fp,-len+1,SEEK_CUR);
にすればいいかな?

なんか、文字列検索ってなかなか複雑だね。
まだどっか、間違ってそうだわ。
0933デフォルトの名無しさんNGNG
"aa"aaa, a"aa"aa, aa"aa"a, aaa"aa"
こう検索するの?
0934911NGNG
if (ch == argv[2][j] || ch == argv[2][j = 0])
この部分がよく分からないのですがどういう動作をするんでしょう?
0935デフォルトの名無しさんNGNG
>>878=927
釣られてやる。
860番代辺りに同じ質問と回答がある。
0936デフォルトの名無しさんNGNG
>>934
ch == argv[2][j]が偽であるとき、jに0を代入して
ch == argv[2][j]を検査する。
0937923NGNG
>>933 Yes!
でも、漏れの使ってるエディタとかは修正しない方の方式だし、
ソフトによってまちまちだから、別にそこまでしなくてもいいかも。
0938911NGNG
>>936
ポインタで書いたら
if (ch == *(argv[2]+j) || ch == *(argv[2]+(j=0)))
こうですか?
0939デフォルトの名無しさんNGNG
>>923
そう検索するんだったら、一文字読んで fgetpos()、
文字列が一致するか確認したら、fsetpos() で元の位置に戻す
とかした方が楽なんじゃないの?
0940デフォルトの名無しさんNGNG
>>938
*(Pointer + Integer) ≡ Pointer[Integer] ≡ Integer[Pointer]
どう書き換えてもポインタ演算。
0941デフォルトの名無しさんNGNG
>>938
これ位までなら、理解出来るようになろうね
if (ch == i[argv[2]] || ch == (j=0)[2[argv]] )
0942デフォルトの名無しさんNGNG
>>900>>908
#include <stdio.h>
#include <windows.h>
int main(void)
{
int i;
for(i=1;i<=20;i++)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),(WORD)(4+(1-(i-1)/10)*2));
printf("%d\n",i);
}
return 0;
}
0943デフォルトの名無しさんNGNG
>>900
こんな方法もある。
#include <stdio.h>
int main(void)
{
int num;
printf("num = ");
scanf("%d", &num);
if(10 <= num && num <= 20){
printf("\x1b[1;33;48m");
printf("num = %d\n", num);
}
else if(0 <= num && num <= 9){
printf("\x1b[1;31;48m");
printf("num = %d\n", num);
}
else
printf("num = %d\n", num);
printf("\x1b[m");
return 0;
}
0944山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0945デフォルトの名無しさんNGNG
すみません、教えていただけませんか?

文字列 str に同じ文字が続くときは、それらを1つにする関数
  void omit_samechar(char str[])
を作成せよ。

実行例:(下線部分は実行時に入力する)
  文字列を入力してください:sssaaaaanyyyosaaaannnn
  sanyosan
0946デフォルトの名無しさんNGNG
void omit_samechar( char str[] ){
char *dst = str, prev = 0;
for( ;*str; str++ )
{ if( *str != prev ) *dst++ = *str;
prev = *str; }
}
0947デフォルトの名無しさんNGNG
>>946
終端は?
0948945NGNG
ありがとうございます。
でもすみませんが、途中じゃわからないので
全部教えていただけませんか?
0949デフォルトの名無しさんNGNG
void omit_samechar(char str[])
{
char *p;

if (str == NULL || *str == '\0') {
return;
}
p = str++;
do {
if (*str != *p) {
p++;
}
} while(*p = *str++);
}
/* 常にコピーする辺りが無駄 */
0950デフォルトの名無しさんNGNG
>>948
main()位自分で書け。
0951デフォルトの名無しさんNGNG
void omit_samechar( char str[] ){
char *dst = str;
for( ;*dst++ = *str;)
for (; *dst == *++str;) ;
}
0952デフォルトの名無しさんNGNG
void omit_samechar( char str[] ){
char *dst = str;
for( ;*dst = *str; *dst++)
for (; *dst == *++str;) ;
}
0953デフォルトの名無しさんNGNG
void omit_samechar(char str[])
{
char *p;
for (p = str; *p = *str; p++) {
while (*p == *++str) {
}
}
}
/* がーん、952と同じな上に出遅れた */
0954デフォルトの名無しさんNGNG
void omit_samechar(char *s)
{
    char *p=s;
    while(*p++){
        if(*p != *s){
            *++s = *p;
        }
    }
}
0955デフォルトの名無しさんNGNG
>954
最後のヌル文字入る?
0956デフォルトの名無しさんNGNG
void omit_samechar(char str[])
{
char *p = str;
do {
if (*str != *p) {
*++p = *str;
}
} while (*str++);

>>955
先にコピー済みなので大丈夫。
0957954NGNG
みてわかんない?
0958山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0959900NGNG
>>910
例えば、
#include<stdio.h>

int main(){

int a=30;

while(1){
printf("%d\n",a);
getchar();
a--;
if(a==0){return 0;}


}
}
このようなプログラムがあった場合、変数aが20になった場合10まで色が黄色に、
10になった場合0まで赤色にしたいのです。
0960デフォルトの名無しさんNGNG
MS-DOSプロンプトを使っているならANSIエスケープを使う
google で ANSIエスケープ を検索
0961デフォルトの名無しさんNGNG
すいませんおねがいします。

文字をデータとして保持する構造体Listを考える。二つの リストをl1とl2とするとき、
l2の要素を l1の後ろに連結する関数を定義し、その動作を確認しなさい。 戻り値は、
追加したノード数とする。また、l2の要素と l1に追加された要素は独立の存在するとする。

int concat(List &l1,List l2)
0962デフォルトの名無しさんNGNG
>>961
構造体の定義も書かないでできるか!
0963961NGNG
>>962
問題に構造体の定義がないので自分で自由に決めるみたいです。
おねがいします。
0964デフォルトの名無しさんNGNG
理由は無いけどむかつくから作ってあげない。
0965デフォルトの名無しさんNGNG
おまいらアルゴリズムの本買えよ
0966デフォルトの名無しさんNGNG
Cの教科書穴が開くほど嫁!




って逝ったらこのスレの意義がなくなるか…
0967rNGNG
>>911
今さらだが、折角書いたのでupさせてくださいな...
http://do.sakura.ne.jp/〜junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=119
ファイルが aaaa で検索文字列が aa のとき、3になる。

つーか、ずいぶん大げさなプログラムになってしまったので、
あんまり参考にはならないかもね。ケケッ!
0968r/967NGNG
しかもチルダが全角になってやがる。
0969デフォルトの名無しさんNGNG
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0970デフォルトの名無しさんNGNG
なぜか実数型使うと出力が変になります
-947347397.00とかに。なぜですか?
#include <stdio.h>
void main (void)
{
double indata[5];
double ave = 0.0;
int i;

for(i=0;i<5;i++)
{
printf("\n数値を入力(実数型)");
rewind (stdin);
scanf ("%4.2f",&indata[i]);
ave=ave+indata[i];
}
printf("平均値は%4.2f",ave/5);
}
0971デフォルトの名無しさんNGNG
>>970
scanf("%lf",&indata[i]);
0972デフォルトの名無しさんNGNG
指定した文字数(char型)しか配列に格納せず 指定した文字数以降は廃棄される
関数があるって聞いたのですがなんていう関数ですか?
例)
キーボード入力でabcdefghijkと打ち込んで変数(配列)の文字数指定が5文字だとしたら
変数にはabcd\0と格納されefghijkは廃棄されるという関数なのですが・・・・
知ってる方教えてください よろしくお願いしますm(_ _)m
0973r/967NGNG
fgetsでいいんじゃないか。
0974デフォルトの名無しさんNGNG
#include <stdio.h>
void main (void)
{
char i;
scanf("%c",&i);
while ( i != 'Y' || i != 'N')
{
scanf ("%s",&i);
}
printf ("終了\n");
}
なぜか永久ループです
0975デフォルトの名無しさんNGNG
FAQを目から血が出るほど読みまくれ
0976デフォルトの名無しさんNGNG
#include <stdio.h>
void main (void)
{
char i;
scanf("%c",&i);



c = toupper(c);



while ( i != 'Y' || i != 'N')
{
scanf ("%s",&i);
}
printf ("終了\n");
}
0977デフォルトの名無しさんNGNG
>>974
ネタ?
0978積>>974NGNG
何で宿題でもないものを、このスレで…
つーか、もしかして、1000取り合戦なのか?
0979デフォルトの名無しさんNGNG
main()
{
  std::cout << std::cin;
}
0980974NGNG
釣りでした
0981デフォルトの名無しさんNGNG
せっかく1000が近いんだし答えが出てない問題に答えてやるか
0982デフォルトの名無しさんNGNG
>>974
残り僅かなのに、スレを無駄に消費した責任を取って、次スレよろ
0983961NGNG
>>981
お願いします。。
0984911NGNG
911ですけどやっぱり検索文字列aabでaaabを検索したら無理でした。
/* データ検索のルーチン */

while ((ch = fgetc(fp)) != EOF) {
if (ch == argv[2][j] || ch == argv[2][j = 0]) {
++j;
if (argv[2][j] == '\0') {
++i;
j = 0;
}
}
}

/* データ検索のルーチン終了 */
ここから改造してそこを修正する方法はないんでしょうか?
0985デフォルトの名無しさんNGNG
>>961
本当に
>文字をデータとして保持する構造体List
なのか?
0986デフォルトの名無しさんNGNG
#include <string>
#include <stdio.h>

struct List
{
 std::string buf_;
};


int concat(List &l1,List l2)
{
 l1.buf_ += l2.buf_;
 return l1.buf_.size();
}

main()
{
 List l1,l2;
 l1.buf_ = "萌";
 l2.buf_ = "ろろろろ";
 concat(l1, l2);
 printf("%s", l1.buf_.c_str());
}
0987デフォルトの名無しさんNGNG
974じゃないけど次スレ立たないんで立てときました。

<`Д´>C/C++の宿題は私にやらせるニダ!Ver11

http://pc2.2ch.net/test/read.cgi/tech/1058283913/
0988デフォルトの名無しさんNGNG
>>987
乙
0989デフォルトの名無しさんNGNG
>>984
/* データ検索のルーチン */

while ((ch = fgetc(fp)) != EOF) {
if (ch == argv[2][j]) {
++j;
if (argv[2][j] == '\0') {
++i;
j = 0;
}
}
else {
fseek(fp, -j, SEEK_CUR);
j = 0;
}
}

/* データ検索のルーチン終了 */
0990961NGNG
>>985
はい。。

>>986
ありがとうございます!!ですがこの形でビルドすると戻り値がないのですが。。
戻り値はノード数にしたいのですがどうすればいいですか???
0991rNGNG
>>984
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=119
fseekしないでもOKです。
0992デフォルトの名無しさんNGNG
>>990
どういう判断で戻り値が無いと思ったの?
0993961NGNG
>>992
ビルドするとエラーのところに、警告で戻り値がないのでvoidとみなします。とでてくるんです。
0994デフォルトの名無しさんNGNG
>>993
その警告が出てる関数はmain()じゃねーのか?
0995デフォルトの名無しさんNGNG
>>993
main()→void main()
にすればいいんじゃ?
0996デフォルトの名無しさんNGNG
int main()
だろ?>>995
0997デフォルトの名無しさんNGNG
>>996
ネタに(略
0998デフォルトの名無しさんNGNG
>>997
ネタということにしたいのですね? :)
0999デフォルトの名無しさんNGNG
>>995-998
もう、その手のネタは飽きた
1000デフォルトの名無しさんNGNG
>>999
ふーん
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。