- Printf цикл отступ, f2404, 16:00 , 13-Сен-16 (1)
> В чистом Си как-то можно динамически изменять отступ в цикле при выводе > на экран через printf? > Допустим: > int a = 1; > a++; > while (a < 10) { > printf("d"); > } > Вместо 12 как-то можно подставить переменную а?Можно выводить пробелы в цикле (если я правильно понял задачу) for (int j = 0; j < a; ++j) printf(" ");
- Printf цикл отступ, dcc0, 17:13 , 13-Сен-16 (2)
>[оверквотинг удален] >> Допустим: >> int a = 1; >> a++; >> while (a < 10) { >> printf("d"); >> } >> Вместо 12 как-то можно подставить переменную а? > Можно выводить пробелы в цикле (если я правильно понял задачу) > for (int j = 0; j < a; ++j) printf(" > "); Ok, вопрос в том , как увеличить пробелы для каждой итерации?
- Printf цикл отступ, f2404, 17:18 , 13-Сен-16 (3)
>[оверквотинг удален] >>> int a = 1; >>> a++; >>> while (a < 10) { >>> printf("d"); >>> } >>> Вместо 12 как-то можно подставить переменную а? >> Можно выводить пробелы в цикле (если я правильно понял задачу) >> for (int j = 0; j < a; ++j) printf(" >> "); > Ok, вопрос в том , как увеличить пробелы для каждой итерации?for (int a = 0; a < 10; ++a) { // основной цикл: a от 0 до 9 for (int j = 0; j < a; ++j) printf(" "); // вложенный цикл: печатаем a пробелов }
- Printf цикл отступ, dcc0, 18:06 , 13-Сен-16 (4)
#include <stdio.h> main () {
char b = 's'; int i = 0; char buf[20]; while (i < 20) { buf[i]=32; printf("%s", buf); printf("%c\n", b); ++i; } } Собрал пока такое. Работает верно, но вывод несколько загадочен.
- Printf цикл отступ, f2404, 18:14 , 13-Сен-16 (5)
>[оверквотинг удален] > char buf[20]; > while (i < 20) { > buf[i]=32; > printf("%s", buf); > printf("%c\n", b); > ++i; > } > } > Собрал пока такое. > Работает верно, но вывод несколько загадочен.Для начала буфер надо обнулить, иначе при печати будет мусор: char buf[20] = {0}; Не очень понятно, зачем писать char b = 's'; printf("%c\n", b); когда это то же самое, что printf("s\n"); И использовать цикл for короче, чем int i = 0; while (i < 20) { ... ++i; }
- Printf цикл отступ, dcc0, 18:25 , 13-Сен-16 (6)
>[оверквотинг удален] > char b = 's'; > printf("%c\n", b); > когда это то же самое, что > printf("s\n"); > И использовать цикл for короче, чем > int i = 0; > while (i < 20) { > ... > ++i; > } Спасибо, я что-то не подумал про вложенный цикл. Да char b = 's'; это так, не обращайте внимание. Просто пытаюсь вникнуть в некоторые аспекты си. В учебных целях... Спасибо еще раз...
- Printf цикл отступ, f2404, 18:28 , 13-Сен-16 (7)
> Спасибо, я что-то не подумал про вложенный цикл. > Да char b = 's'; это так, не обращайте внимание. > Просто пытаюсь вникнуть в некоторые аспекты си. > В учебных целях... Спасибо еще раз...Пожалуйста.
- Printf цикл отступ, dcc0, 18:31 , 13-Сен-16 (8)
>> Спасибо, я что-то не подумал про вложенный цикл. >> Да char b = 's'; это так, не обращайте внимание. >> Просто пытаюсь вникнуть в некоторые аспекты си. >> В учебных целях... Спасибо еще раз... > Пожалуйста.После php и bash си кажется очень строгим... но чувствую, что надо с некоторыми вещами разобраться. Вот интересно, я правильно понимаю, что buf[32]={0} - означает, что каждое значение массива символов buf хранит 0
- Printf цикл отступ, f2404, 20:08 , 13-Сен-16 (9)
> После php и bash си кажется очень строгим... но чувствую, что надо > с некоторыми вещами разобраться.Не кажется, так и есть :) > Вот интересно, я правильно понимаю, что buf[32]={0} - означает, что каждое значение > массива символов buf хранит 0 Да, такая запись инициализирует массив нулями.
- Printf цикл отступ, Asgard, 19:32 , 14-Сен-16 (10)
> В чистом Си как-то можно динамически изменять отступ в цикле при выводе > на экран через printf? > Допустим: > int a = 1; > a++; > while (a < 10) { > printf("d"); > } > Вместо 12 как-то можно подставить переменную а?Если я Вас правильно понял, то вы спрашиваете про ширину поля, в котором размещается выводимый аргумент. Ширина эта задаётся числом, располагаемым между знаком % и квалификатором аргумента. Если она не задана, то автоматически задастся поле, достаточное для вывода всех символов аргумента. Если недостаточна - будет так же расширена. Например. printf ("[%d, %d]", 172, 9); выведет строку "[172, 9]" A вот printf ("[], ]]", 172, 9); -- строку "[ 172, 9]" (ширина поля 5 символов, выравнивание по правой стороне) "Динамически" ширину поля можно указывать с помощью подстановочного квалификатора *. В этом случае фактическую ширину поля нужно передавать как один из соответствующих аргументов. Например: printf ("%*d", w, var); В результате значение переменноый var будет выведено в поле шириной w Между знаком % и шириной поля так же можно указать символ-заполнитель для поля. Например, printf ("%#9d", 108) выдаст строку "######108"
- Printf цикл отступ, dcc0, 20:07 , 14-Сен-16 (11)
>[оверквотинг удален] > 9]" (ширина поля 5 символов, выравнивание по > правой стороне) > "Динамически" ширину поля можно указывать с помощью подстановочного квалификатора *. В > этом случае фактическую ширину поля нужно передавать как один из соответствующих > аргументов. > Например: printf ("%*d", w, var); В результате значение переменноый var будет выведено > в поле шириной w > Между знаком % и шириной поля так же можно указать символ-заполнитель для > поля. > Например, printf ("%#9d", 108) выдаст строку "######108" Класс! Спасибо ОГРОМНОЕ! Вы все верно поняли. Надо было мне просто точнее сформулировать ... именно подставить квалификатор! Попробую сегодня!
- Printf цикл отступ, dcc0, 20:30 , 14-Сен-16 (12)
>[оверквотинг удален] >> "Динамически" ширину поля можно указывать с помощью подстановочного квалификатора *. В >> этом случае фактическую ширину поля нужно передавать как один из соответствующих >> аргументов. >> Например: printf ("%*d", w, var); В результате значение переменноый var будет выведено >> в поле шириной w >> Между знаком % и шириной поля так же можно указать символ-заполнитель для >> поля. >> Например, printf ("%#9d", 108) выдаст строку "######108" > Класс! Спасибо ОГРОМНОЕ! Вы все верно поняли. Надо было мне просто точнее > сформулировать ... именно подставить квалификатор! Попробую сегодня!именно вот так #include <stdio.h> main () { int i=0; int w =1; while(i !=5) { i++; printf("%*d\n", i, w); } }
- Printf цикл отступ, Led, 22:40 , 15-Сен-16 (13)
|