2016-10-16 41 views
-2

標準入力から文字を1つずつ読み込み、すべての大文字を小文字に、すべて小文字を大文字に変換するCプログラムを作成しています。大文字小文字を区別し、その結果を標準出力に書き出します。 また、私が読んだ文字の数と、どれだけ多くの文字を各方向に変換したのかを数え、最後に合計を出力したいと考えています。すべての小文字を大文字に変換する

例 - Radha Krishna! となります

rADHA kRISHNA!合計で

読む15文字、10は小文字

に、大文字に2を変換ここに私のコードです: -

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

int main() 
{ 
    char sentence[100]; 
    int count, ch, i; 

    printf("Enter a sentence \n"); 
    for (i = 0; (sentence[i] = getchar()) != '\n'; i++) 
    { 
     ; 
    } 
    sentence[i] = '\0'; 
    /* shows the number of chars accepted in a sentence */ 
    count = i; 
    for (i = 0; i < count; i++) 
    { 
     ch = islower(sentence[i])? toupper(sentence[i]) : 
tolower(sentence[i]); 
     putchar(ch); 
    } 
} 

それは小文字に大文字またはその逆から変換されますが、カウントする方法を私は理解できません。

+2

if/elseブロックへの操作の場合は3つを変更し、1つのカウンタを増分すると、2つのカウンタを加算して0に設定します。 "if"条件に応じて、 – OldProgrammer

+0

"*' for(i = 0; i alk

+1

あなたはこのコードを書きましたか? – alk

答えて

0

3項をif/else節に変更し、各条件にカウンターを指定します。

int changedToLower = 0; 
int changedToUpper = 0; 
for (i = 0; i < count; i++) { 
    char oldC = sentence[i]; 
    if(islower(sentence[i])) { 
     ch = toupper(sentence[i]) 
     changeToUpper += (ch != oldC)? 1 : 0; 
    } else { 
     ch = tolower(sentence[i]); 
     changeToLower += (ch != oldC)? 1 : 0; 
    } 
} 
+1

1) '!'スペースは低下しています。 3つのケースがあります:下、上、またはどちらもありません。 2) 'islower()'( 'isupper()')はtrueを返すということは、toupper()で文字を変更できることを意味するわけではありません( 'tolower()');ロケールには、大文字小文字のみの文字を含めることができます。 – potrzebie

+0

@potrzebieありがとう。今はどう? –

0

私たちは

  1. に最初の標準入力から1つずつ文字を読むためのCプログラムを契約を確認してみましょう、

  2. は、小文字にすべて大文字に変換すべての小文字を大文字にして、

  3. 結果を標準出力に書き込みます。各方向に転換しているか、それらの多く

  4. ... ..読んでどのように多くの文字を数え、

  5. ...、

  6. 出力終了時に合計。

私たちは入力文字が任意のcharだけでなく、A-Za-zことができると仮定しましょう。

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

int main() { 
    // No need to save previous letters 
    // char sentence[100]; 
    unsigned long long character_count = 0; //#4 
    unsigned long long toupper_count = 0; //#5 
    unsigned long long tolower_count = 0; //#5 

    printf("Enter a sentence\n"); 

    // for (i = 0; (sentence[i] = getchar()) != '\n'; i++) 
    int ch; 
    while ((ch = getchar()) != EOF) { // #1 
     character_count++;    // #4 
     if (ch == '\n') break;   // #1 

     if (isupper(ch)) { 
     ch = tolower(ch);  // #2 
     tolower_count++;  // #5 
     } else if (islower(ch)) { 
     ch = toupper(ch);  // #2 
     toupper_count++;  // #5 
     } 

     putchar(ch);    // #3 
    } 

    printf("\n"     // #6 
     "Count: characters read : %llu\n" 
     "Count: converted to lower: %llu\n" 
     "Count: converted to upper: %llu\n", 
     character_count, toupper_count, tolower_count); 
} 
+1

今夜は厳しい群衆でなければならない '': '' –

関連する問題