Консультация № 160187
11.02.2009, 12:06
0.00 руб.
0 5 4
Здравствуйте!
Как можно вот такое "своять" на языке СИ:

___a
__aba
_abcba
_abcdcba
abcdedcba
символ "_" у меня вместо пробела

и это всё появляется при вводе символа e.

Обсуждение

Неизвестный
11.02.2009, 12:13
общий
это ответ
Здравствуйте, KuchumHan!

Не совсем понятен вопрос, ну можно так, например(см. приложение)
:)

Приложение:
#include <iostream>

int main ( int argc, char *argv[])
char szData[1024];
cout<<"please, type 'e'";
cin >> szData;

cout<<" a\n";
cout<<" aba\n";
cout<<" abcba\n";
cout<<" abcdcba\n";
cout<<"abcdedcba\n";

return 0;
}
Неизвестный
11.02.2009, 12:50
общий
это ответ
Здравствуйте, KuchumHan!

Код функции приведен в приложении...

Приложение:
#include <stdio.h> /* стандартная библиотека ввода-вывода */
#include <conio.h> /* стандартная библиотека консольного ввода-вывода */

void func(int n) /* n - количество формируемых строк */
{
int i,k;
char s[n][2*n]; /* массив формируемых строк */

for(i=0;i<n;i++)
{
for(k=0;k<2*n;k++)
s[i][k] = ' '; /* заполняем массив пробелами */
s[i][k] = '\0'; /* завершающий 0 */
}
for(i=0;i<n;i++) /* для каждой строки */
{
for(k=0;k<n;k++) /* для каждой буквы */
s[i][n-1-i+k] = 'a'+k; /* записываем первое вхождение буквы */
s[i][n-1+i-k] = 'a'+k; /* записываем второе вхождение буквы */
puts(s[i]); /* выводим строку на печать */
}
}
Неизвестный
11.02.2009, 17:45
общий
это ответ
Здравствуйте, KuchumHan!
Программа очень простая:
Код:

#include "stdio.h"
#include "conio.h"

#define STR_NUM 5 /* Количество строк */

int main()
{
char ch;
int line,i;
while((ch=getch())!='e'&&(ch!='E'));
for(line=0;line<STR_NUM;line++)
{
for(i=line+1;i<STR_NUM;i++)putch(' ');
for(ch='a';ch<'a'+line;ch++)putch(ch);
do
{
putch(ch);
} while (ch--!='a');
printf("\n");
}
_getch();
return 0;
}


Результат работы:
Код:

a
aba
abcba
abcdcba
abcdedcba
Неизвестный
11.02.2009, 17:51
общий
Сандров Алекс, просили программу на C, а не на C++.
Person, интересно Вы проверяете свои программы. Первое, что бросается в глаза это char s[n][2*n];
Дело в том, что когда Вы так объявляете массив то компилятору необходимо знать сколько выделить памяти в стеке для размещения массива. Поэтому он никак, не ожидает встретить в качестве размера автоматическую переменную, а только лишь константу. Отсюда следует, что эта функция не только работать не будет, а даже не скомпилируется.
Неизвестный
12.02.2009, 02:36
общий
это ответ
Здравствуйте, KuchumHan!

Видимо имелось ввиду, что вводимый символ должен задавать границу вывода пирамиды... В таком случае, вот решение:

Приложение:
#include <stdio.h>
#include <ctype.h>
#include <conio.h>

void main()
{
char letter;
printf("Please enter a letter:");

letter = getch();
putch(letter); putch('\n');

if (isalpha(letter))
{
letter = tolower(letter);
for (int i='a'; i <= letter; ++i)
{
for (int spaces = letter - i; spaces > 0; --spaces)
putch(' ');
char symbol;
for (symbol = 'a'; symbol <= i; ++symbol)
putch(symbol);
for (symbol = symbol - 2; symbol >= 'a'; --symbol)
putch(symbol);

putch('\n');
}
}
else
printf("Entered symbol is not a letter.\n");
}
Форма ответа