タイトルのプログラミングの課題を出されたのですがうまく組めません教えてください

質問者からの補足コメント

  • a[5] という配列に{10,8,33,12,25}という値を入れてから処理するプログラムで

      補足日時:2017/04/17 13:46

このQ&Aに関連する最新のQ&A

A 回答 (1件)

全く、これっぽっちも…判らない?



適性ないか授業受けるのが無駄かも知れませんので、考え直した方がいいと思われます。
    • good
    • 1
この回答へのお礼

すいません少し大げさな言い方でした自分でがんばってみたら解けました

お礼日時:2017/04/17 15:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Q学校課題のプログラミングにとても悩まされています…。

学校課題のプログラミングにとても悩まされています…。

学校でC言語でプログラミングせよ。
との課題が出たのですが、プログラミングが全くわからなくて困っています!!
お願いします!!誰か助けて下さい!!

待ち行列

・レジ到着は一時間あたり平均20人。
・客は一番待ち人数の少ないレジに並ぶ。
・待ち人数の同じレジが二つ以上ある場合は等確率でその内の一つをランダムに選択。
・客一人あたりの勘定時間は平均値10分の指数分布
・一つの勘定台には最長平均5分までしか客を待たせられない

レジの必要数の推定と客の平均待ち時間およびレジの平均空き時間を推定せよ。
ともありますが、さっぱりです…。

Aベストアンサー

こんばんは。

プログラムがわからないというのは、どのくらいのレベルのことなのか・・・
C言語で"Hello world"を出力するくらいのことはできるのでしょうか??

レジの数が1の場合の混み具合ρ(=λ÷μ)を求め、さらに待ち時間を求める。
待ち時間が5分を超えるようなら、
レジの数が2の場合の混み具合ρを求め、さらに待ち時間を求める。
待ち時間が5分を超えるようなら、、

このようにレジの数を1から1つずつカウントアップして待ち時間が5分以下になる数を探すことになるかと思います。
変数の使い方がわからないとか、ループ(繰り返し)処理がわからない、といった超基本的なことであれば書籍を読んでクリアしないと・・・

Q課題がうまくいかない

課題で &lt; と入力されたら < と表示し、 &gt; と入力されたら > と表示し、…といった感じで5種類の入力に対応して表示させるプログラムを書いたのですが、うまく思った通りの結果がでません。我ながら汚いプログラムだと思いますが、自分が考えたプログラムは以下のようです。

#include <stdio.h>
int main(void){
char c[50];
int i=0;
while(c[i]!=-1){
scanf("%c",&c[i]);
i=i+1;
}
if((c[0]=='&')&&(c[1]=='l')&&(c[2]=='t')&&(c[3]==';')){
printf("<");
}
else if((c[0]=='&')&&(c[1]=='g')&&(c[2]=='t')&&(c[3]==';')){
printf(">");
}
else if((c[0]=='&')&&(c[1]=='a')&&(c[2]=='m')&&(c[3]=='p')&&(c[4]==';')){
printf("&");
}
else if((c[0]=='&')&&(c[1]=='q')&&(c[2]=='u')&&(c[3]=='o')&&(c[4]=='t')&&(c[5]==';')){
printf("\"");
}
else if((c[0]=='&')&&(c[1]=='a')&&(c[2]=='p')&&(c[3]=='o')&&(c[4]=='s')&&(c[5]==';')){
printf("'");
}
return(0);
}

こんな感じです。
何卒アドバイスお願いします。

課題で &lt; と入力されたら < と表示し、 &gt; と入力されたら > と表示し、…といった感じで5種類の入力に対応して表示させるプログラムを書いたのですが、うまく思った通りの結果がでません。我ながら汚いプログラムだと思いますが、自分が考えたプログラムは以下のようです。

#include <stdio.h>
int main(void){
char c[50];
int i=0;
while(c[i]!=-1){
scanf("%c",&c[i]);
i=i+1;
}
if((c[0]=='&')&&(c[1]=='l')&&(c[2]=='t')&&(c[3]==';')){
printf("<");
}
else if((c[0]=='&')&&(c[...続きを読む

Aベストアンサー

最近、標準入出力を使っていないので自信はないですが。
(現在は標準入出力のない環境がほどんどなので・・・。)
gets()が使ってはだめなら、getchar()を使用したらどうですか?
scanf()は入力フォーマットに合わない入力があるとバグるというのが通説で通常は使用しません。
gets()は入力文字列が用意したBufferサイズを超えた場合メモリ破壊につながります。

#define STRING_MAX 80

char string[STRING_MAX];

do
{
printf("input:");
for ( i = 0; i < STRING_MAX; i++ )
{
string[i] = getchar();
if ( string[i] == '\n' )
{
/* Enterが押されたらループを抜ける */
break;
}
    /* @1 */
}
}while ( string[i] != '\n' );

あと、ついでで入力が数値なら@1の場所に
if ( !isdigit(string[i]) )
{
/* 数値でない文字が入力されたので再入力させる */
break;
}
とすることもできます。

ん?これだとVCのみで使えるgetc()のソースかな?
getchar()はバッファリングされてEnterが入るまで動作しなかったかも。
その場合、\nでなくてEOFで判定かも・・・。

これ確かめるには@1に
if ( string[i] == '\n' ) printf("\\n");
else if ( string[i] == EOF ) printf("[EOF]");
else printf("%c", string[i]);
を入れてみてください。

最近、標準入出力を使っていないので自信はないですが。
(現在は標準入出力のない環境がほどんどなので・・・。)
gets()が使ってはだめなら、getchar()を使用したらどうですか?
scanf()は入力フォーマットに合わない入力があるとバグるというのが通説で通常は使用しません。
gets()は入力文字列が用意したBufferサイズを超えた場合メモリ破壊につながります。

#define STRING_MAX 80

char string[STRING_MAX];

do
{
printf("input:");
for ( i = 0; i < STRING_MAX; i++ )
{
...続きを読む

QC言語のプログラミングがうまくいきません!

とりあえず、自分でプログラムしましたが、どこか間違っているようです。僕のプログラムを載せますので、どこが間違っているのか教えて下さい。あと、正しいプログラムを書いていただければ幸いです。
3つの辺の長さをx、y、zに代入して三角形が成立すれば、その形状と面積をヘロンの公式を使って求める。
#include <stdio.h>
#include <math.h>
{
double x ,y, z ,error ,menseki ,ans;
printf("x ?") scanf("%f" , &x);
printf("y ?") scanf("%f" , &y);
printf("z ?") scanf("%f" , &z);

ans=(x+y+z)/2;
menseki=sqrt(ans*(ans-x)*(ans-y)*(ans-z));

if (x === y || y == z || x == z)
{
printf ("正三角形です");
printf("面積は%dです" , menseki);
}
else if (x == y || y == z || z == x)
{
printf("二等辺三角形です");
printf("面積は%dです" , menseki);
}
else
{
printf("三角形です");
printf("面積は%dです , menseki);
if(x<y+z || y<x+z || z<x+y)
{
printf("error");
}
}

とりあえず、自分でプログラムしましたが、どこか間違っているようです。僕のプログラムを載せますので、どこが間違っているのか教えて下さい。あと、正しいプログラムを書いていただければ幸いです。
3つの辺の長さをx、y、zに代入して三角形が成立すれば、その形状と面積をヘロンの公式を使って求める。
#include <stdio.h>
#include <math.h>
{
double x ,y, z ,error ,menseki ,ans;
printf("x ?") scanf("%f" , &x);
printf("y ?") scanf("%f" , &y);
printf("z ?") scanf("%f"...続きを読む

Aベストアンサー

mainという関数ヘッダや、セミコロンが不足して文法エラーのところがありますが、これはタイプミスかコピペミスでしょうね。

それら以外の、明白な誤りは6点。
<この問題特有>
(1) 三角形が成立しているかどうかの判断を最初にすべき。正三角形や二等辺三角形の判断は、三角形が成立したときに限って行う。また、判断する前に面積を求めているが、三角形でない場合にsqrtの引数が負になって、そこでエラーになるかもしれないので、これも三角形判断後に行う。
(2) 三角形かどうかの判断基準がおかしい。
(3) 正三角形の判断で、AND条件(&&)と、OR条件(||)を間違えている。
<Cの使い方一般>
(4) double値の変数なのにscanfの書式で %f を使っている。
(5) double値のprintfなのに書式で %d を使っている。
(6) scanfの戻り値をチェックしていない。


<その他の良くない点>
(7) scanfは使いこなしが難しい関数なので、上級者の自信が付くまでは使ってはいけません。文字配列を定義して、fgets()でそこに入力して、sscanf() でdoubleに変換してください。sscanfも同様に戻り値のチェックが必要です。
(8) 標準出力にプロンプトを出している。これがなぜ良くないかは説明が難しいので、とりあえずわからなくてもいいです。

(4)(5)(6)のような間違いをするレベルの初心者の割に、プログラム全体としてはよく書けていると思います。

mainという関数ヘッダや、セミコロンが不足して文法エラーのところがありますが、これはタイプミスかコピペミスでしょうね。

それら以外の、明白な誤りは6点。
<この問題特有>
(1) 三角形が成立しているかどうかの判断を最初にすべき。正三角形や二等辺三角形の判断は、三角形が成立したときに限って行う。また、判断する前に面積を求めているが、三角形でない場合にsqrtの引数が負になって、そこでエラーになるかもしれないので、これも三角形判断後に行う。
(2) 三角形かどうかの判断基準がおかしい。
(3) 正...続きを読む

QC言語のプログラミングがうまくいきません!

先日のプログラムを作り直しました。アドバイスのおかげでエラーは減りましたが、まだ完ぺきではないようです。恐らく、elseのところがいけないと思うのですが、どうしたらいいか分かりません。
ご指摘お願いします。

#include <stdio.h>
#include <math.h>
void main(void)
{
double x ,y ,z ,error ,menseki ;
double ans;
printf("x ?"); scanf("%lf", &x);

printf("y ?"); scanf("%lf", &y);

printf("z ?"); scanf("%lf", &z);


if(x<y+z || y<x+z || z<x+y)
{
ans=(x+y+z)/2;
menseki=sqrt(ans*(ans-x)*(ans-y)*(ans-z));
}


if(x==y && y==z && z==x)
{
printf("正三角形です");
printf("面積は%lfです" , menseki);
}


else if(x==y || y==z || z==x)
{
printf("二等辺三角形です");
printf("面積は%lfです" , menseki);
}


else
{
printf("三角形です");
printf("面積は%lfです" , menseki);
}


else
{
printf("error");
}
}

先日のプログラムを作り直しました。アドバイスのおかげでエラーは減りましたが、まだ完ぺきではないようです。恐らく、elseのところがいけないと思うのですが、どうしたらいいか分かりません。
ご指摘お願いします。

#include <stdio.h>
#include <math.h>
void main(void)
{
double x ,y ,z ,error ,menseki ;
double ans;
printf("x ?"); scanf("%lf", &x);

printf("y ?"); scanf("%lf", &y);

printf("z ?"); scanf("%lf", &z);


if(x<y+z || y<x+z || z<x+y)
{
ans=(x+y+z)/2;
menseki=sqrt(...続きを読む

Aベストアンサー

エラーの場合を先に書くのが、私の好みです。
押しつけるつもりは全くありません。
あくまで参考です。

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

int main(void)
{
double x, y, z, s;

printf("x ? "), scanf("%lf", &x);
printf("y ? "), scanf("%lf", &y);
printf("z ? "), scanf("%lf", &z);

if (x <= 0 || y <= 0 || z <= 0 || x + y <= z || y + z <= x || z + x <= y) {
printf("三角形にならない\n");
}
else {
if (x == y && y == z) {
printf("正三角形\n");
}
else if (x == y || y == z || z == x) {
printf("二等辺三角形\n");
}
else {
printf("その他の三角形\n");
}
s = (x + y + z) / 2;
printf("面積は%f\n", sqrt(s * (s - x) * (s - y) * (s - z)));
}
return 0;
}

エラーの場合を先に書くのが、私の好みです。
押しつけるつもりは全くありません。
あくまで参考です。

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

int main(void)
{
double x, y, z, s;

printf("x ? "), scanf("%lf", &x);
printf("y ? "), scanf("%lf", &y);
printf("z ? "), scanf("%lf", &z);

if (x <= 0 || y <= 0 || z <= 0 || x + y <= z || y + z <= x || z + x <= y) {
printf("三角形にならない\n");
}
else {
if (x == y && y == z) {
...続きを読む

QC言語プログラミングで数あてゲームを作りましたが、うまくいきません。

0~9の中の3つの異なる数字を当てるゲームを作ったのですが、うまく機能しません。
入力された数字と用意された数字の位置が合っていた場合カウントして教える、入力された数字と用意された数字の位置が違っても別の位置に同じ数字があればカウントして教える、というところが出来ていないみたいです。
何が間違っているのかわからないので、間違っている所を教えて欲しいです。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int ar[2],br[2],i,j,a,b,c,z;
srand(time(NULL));
z=1;
printf("0~9の中の3つの異なる数字を当てるゲームです。\n同じ数字が複数含まれることはありません。\n「123」のように連続して入力してください。\nスペース文字などを入力してはいけません。\n1~9の中から3つの異なる値を入力してください。\n\n");
br[0]=rand()%9+1;
for(;;){
br[1]=rand()%9+1;
if(br[1]!=br[0]){
break;
}
}
for(;;){
br[2]=rand()%9+1;
if(br[2]!=br[0]){
if(br[2]!=br[1]){
break;
}
}
}
for(;;){
scanf("%d",&a);
ar[0]=a/100;
ar[1]=a%100/10;
ar[2]=a%10;
b=0;
c=0;
for(i=0;i<3;i=i+1){
if(ar[i]==br[i]){
b=b+1;
}
}
if(ar[0]==br[1]){
c=c+1;
}
if(ar[0]==br[2]){
c=c+1;
}
if(ar[1]==br[0]){
c=c+1;
}
if(ar[1]==br[2]){
c=c+1;
}
if(ar[2]==br[0]){
c=c+1;
}
if(ar[2]==br[1]){
c=c+1;
}

if(b==3){
printf("3eat!!! %d回目で正解",z);
break;
}
printf("%d eat,%d biteです。\n\n",b,c);
z=z+1;
}
return 0;
}

ちなみにこれ以上のことは習っていないので、そのことを考慮して回答をお願いします。

0~9の中の3つの異なる数字を当てるゲームを作ったのですが、うまく機能しません。
入力された数字と用意された数字の位置が合っていた場合カウントして教える、入力された数字と用意された数字の位置が違っても別の位置に同じ数字があればカウントして教える、というところが出来ていないみたいです。
何が間違っているのかわからないので、間違っている所を教えて欲しいです。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int ar[2],br[2],i,j,a,b,c,z;
srand(time(N...続きを読む

Aベストアンサー

int ar[2],br[2],i,j,a,b,c,z;

配列の宣言について、よく復習しましょう。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報