Anupkumar_vj Ответов: 5

Как написать программу на языке Си для генерации 012345678910987654321 с такими условиями


1. выход должен иметь 20 номеров
2. программа должна содержать только один цикл или условие, или тернарный оператор, или что-то еще
3. не следует инициализировать любое число, доступное в серии, кроме 1
4. не следует тестировать какие-либо nos, доступные в серии (например, i<10, i<=5)

[Обновление]
Я писал и пробовал много раз, как показано ниже
#include <stdio.h>
#include <stdlib.h>

int main()
{
    static int i,j;
    printf("%d",i);
    for(i=1,j=1;i<11,j<(1000/100);i++,j++)
    {
        printf("%d",i);

        printf("%d",10-j);
    }
    return 0;
}

Krunal Rohit

Домашнее задание!

-КРОНА

Anupkumar_vj

Его спросили на собеседовании, найдя решение, но не получив. Я хочу получить ответ для следующего другого интервью

Mohibur Rashid

Вы уже научились для петли?

Anupkumar_vj

Да. Я учился за петлю. Но следует использовать только один цикл

Philippe Mori

Вы не можете использовать оператор запятой для проверки 2 Условий. Если i и j всегда равны, то нет смысла иметь 2 переменные. Вы не можете иметь встроенный цикл, используя один for... Ну, вы можете моделировать с помощью операторов по модулю и делению...

Philippe Mori

Что - то вроде i - (i / 11) * 2 * (i-10) работает.
Любое число <= 10 отдайте сами.
11 дал бы 11 - (11/11) * 2 * (11-10) = 9 (aasuming целочисленное деление).
12 дал бы 12- (12/11) * 2 * (12-10) = 8
И т.д...

Anupkumar_vj

Вы дали слабую математическую идею..
Я использовал свою собственную идею вот так
#включить <stdio.h>
#include <stdlib.h>

тап_п()
{
int i,j;
для(i=1,j=100/50;i<21;i++,j=j+2)
{
printf("%d", ((i-1)-(i-1)/10*(j-22)));
}
возвращает 0;
}
Удовлетворит ли это правилам ? да, он дает вывод в кодовом блоке..

Matt T Heffron

Общий вопрос в различных решениях, приведенных ниже, связан с "20 числами".
Это и есть граф цифры в результирующем дисплее (то есть 10 отсчетов для 2)? (решение, которое вы показываете, имеет 21 цифру)
Или это счет времени? числа используется для составления результата (то есть 10 отсчетов за 1)?

Anupkumar_vj

Вы дали слабую математическую идею..
Я использовал свою собственную идею вот так
#включить <stdio.h>
#include <stdlib.h>

тап_п()
{
int i,j;
для(i=1,j=100/50;i<21;i++,j=j+2)
{
printf("%d", ((i-1)-(i-1)/10*(j-22)));
}
возвращает 0;
}
Удовлетворит ли это правилам ? да, это дает выход в codeblock comipler..

5 Ответов

Рейтинг:
39

OriginalGriff

Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!

Так что начните делать это вручную и выясните, как вы это делаете.
Затем вы можете посмотреть на перевод этого в код.


Patrice T

+5

Рейтинг:
33

phil.o

1) Внимательно прочитайте свой курс.
2) Посмотрите, как это связано с вашим упражнением.
3) Запишите на бумаге, как вы собираетесь делать вещи в peseudo-коде.
4) Откройте IDE или текстовый редактор, если хотите.
5) Начните кодировать в соответствии с пунктом 3.
6) в какой-то момент вы можете столкнуться с трудностями, затем вы можете вернуться сюда и задать конкретный вопрос по конкретной проблеме.


Patrice T

+5

Рейтинг:
21

Patrice T

Ваш код запутался !

Вот первая поправка, которая дает вам первую часть желаемого результата.

#include <stdio.h>
#include <stdlib.h>

int main() {
    static int i;
    for(i=0; i<11; i++) {
        printf("%d",i);
    }
    // Here is the place to make the second part of what you want
    return 0;
}

Я позволяю вам завершить код для завершения результата.

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

[Обновление]
Хорошо, этот кусок кода делает только половину работы. Вот вам и зацепка к решению:
Фактическое использование фрагмента кода f(x)= x
В тексте ниже:
x      -5 -4 -3 -2 -1  0  1  2  3  4  5
f(x)=x -5 -4 -3 -2 -1  0  1  2  3  4  5
?       5  4  3  2  1  0  1  2  3  4  5
?      -5 -4 -3 -2 -1  0 -1 -2 -3 -4 -5
?       5  6  7  8  9 10  9  8  7  6  5

строка 1 - это значения x
строка 2-это фактическое значение f(x)
какая математическая функция дает результаты строки 3 ?
Какое изменение дает результат строки 4 ?
Какое изменение дает результат строки 5 ?


Anupkumar_vj

Там я не могу добавить еще один цикл bcz, он нарушает указанное правило.

Patrice T

Мое обновление - это ключ к решению проблемы.

Anupkumar_vj

Вы дали слабую математическую идею..
Я использовал свою собственную идею вот так
#включить <stdio.h>
#include <stdlib.h>

тап_п()
{
int i,j;
для(i=1,j=100/50;i<21;i++,j=j+2)
{
printf("%d", ((i-1)-(i-1)/10*(j-22)));
}
возвращает 0;
}
Удовлетворит ли это правилам ? да, это дает выход в codeblock comipler..

Patrice T

Вы используете трюк с целочисленным делением, чтобы отменить часть формулы.

Matt T Heffron

+5

Рейтинг:
2

Anupkumar_vj

//Я использовал свою собственную идею и сделал вот так

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j;
    for(i=1,j=100/50;i<21;i++,j=j+2)
    {
     printf("%d",((i-1)-(i-1)/10*(j-22)));
    }
    return 0;
}

Удовлетворит ли это правилам ? да, это дает выход в codeblock comipler..


Patrice T

Вы можете заменить его j=100/50 с j=2
петлю можно упростить таким образом
for(i=0,j=2;i<20;i++,j=j+2) {
printf("%d",((i)-(i)/10*(j-22)));
}

Рейтинг:
17

milev yo

а как насчет этого?

int recurPrint(int n){
    printf("%d",(9)-n);
    if(n){                   /*the only condition*/
        recurPrint(n-1);
    }
    printf("%d",(10)-n);
}
int main(){
    recurPrint(9);            /*the only initialization*/
    printf("\n");
}


Patrice T

Просто петля отсутствует

Anupkumar_vj

Я думаю, что printf возвращает 21, но выход должен иметь 20 чисел.

Patrice T

Смотрите результат как 0 1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1

Anupkumar_vj

Вы дали слабую математическую идею..
Я использовал свою собственную идею вот так
#включить <stdio.h>
#include <stdlib.h>

тап_п()
{
int i,j;
для(i=1,j=100/50;i<21;i++,j=j+2)
{
printf("%d", ((i-1)-(i-1)/10*(j-22)));
}
возвращает 0;
}
Удовлетворит ли это правилам ? да, это дает выход в codeblock comipler..