Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Задача с массивом CHAR


Автор: alexkpblc 29.4.2006, 12:01
Товарищи программисты, помогите девушке решить задачку:

Задается массив типа CHAR (символьный). В него вводим по одному символу 

(нужно использовать GETCHAR). После ввода 0 - закончить. Далее в отдельных 

подпрограммах выполнить следующие условия:
1) Если в строке, количество заглавных символов равно количеству строчных то 

выполнить правило 1: Все строчные символы заменить на заглавные.
2) Если же количество заглавных символов не равно количеству строчных, то 

все строчные символы перенести вперед заглавных.

В ходе выполнения программы распечатывать строчку до изменения и после 

изменения.

Помогите решить, сама не справлюсь, а времени до сдачи преподу - всего неделя осталась. 

Автор: MAKCim 29.4.2006, 16:16
лови  smile 
Код

#include <stdio.h>

void F1(char* array, int size)
{
    int i;
    for (i=0; i<size; i++)
        if (array[i]>96 && array[i]<123) array[i]-=32;
}

void F2(char* array, int size)
{
    int j, k=0;
    for (j=0; j<size; j++)
    {
        if (array[j]>96 && array[j]<123)
        {
            int i=j, temp=array[j];
            while (i>=k+1) array[i]=array[i-1], i--;
            array[k]=temp;
            k++;
        }
    }    
}

void print(char* array, int size)
{
    int i;
    for (i=0; i<size; i++) printf("%c",array[i]);
    printf("\n");
}

int main()
{
    int c=1, big=0,small=0, index=0;
    char array[128];
    while ((c=getchar())-48 && index<128)
    {
        if (c>96 && c<123) ++small;
        else ++big;
        array[index++]=c;
    }
    print(array,index);
    if (small==big) F1(array,index);
    else F2(array,index);
    print(array,index);
    return 0;
}
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)