Задать вопрос
  • Как вывести сумму итераций цикла?

    @gliese581d Автор вопроса
    Василий Дёмин, вот оно что, я не воспринимал функцию и аргументы математически.
  • Как вывести сумму итераций цикла?

    @gliese581d Автор вопроса
    Василий Дёмин, Спасибо за разъяснение, все заработало! Действительно, неверный порядок int h = calculate(j,i); и return start_int, почему-то мне показалось, что значение обязательно должно возвращаться через return, хотя есть условие и все это в одной функции. Если я правильно понимаю, то return лишь для того чтобы возвратить переменную счетчика в main.Для меня не совсем понятно, что порядок аргументов функции, повлиял на результат, ведь это же не вызов, а просто включение информации, и например int i = start_int(); и никак иначе.
  • Как вывести сумму итераций цикла?

    @gliese581d Автор вопроса
    Не смотря на код, который вы написали, пользуясь только вашими подсказками, путем проб и ошибок, дошел до указанного кода, но он не работает так как надо, не понимаю в чем может быть проблема, логически вроде все верно.
    Ответы должны быть подобными:
    Your program should behave per the examples below.
    
    $ ./population
    Start size: 1200
    End size: 1300
    Years: 1
    $ ./population
    Start size: -5
    Start size: 3
    Start size: 9
    End size: 5
    End size: 18
    Years: 8
    $ ./population
    Start size: 20
    End size: 1
    End size: 10
    End size: 100
    Years: 20
    $ ./population
    Start size: 100
    End size: 1000000
    Years: 115


    однако моя программа выдает неправильные результаты.
    после while я добавил
    start_int=k;
    return start_int;

    чтобы ополученную суму в блоке do, присваивалось значение k, таким образом сумма каждой итерации обновляла бы значение k. Но это тоже не работает.
    Может я что то напутал в main?
    int main (void)
    {
      int i = start_int();
      int j = end_int(i);
      int h = calculate(j,i);
      printf("%i", h);
    }


    По факту, производится одна итерация, независимо от введенных данных.
    ./population
    set starting population size: 9
    set ending population size: 900
    1~/ $
  • Как вывести сумму итераций цикла?

    @gliese581d Автор вопроса
    Василий Дёмин, понял, спасибо, поправил, я дней 5 назад начал изучать, поэтому еще не научился правильному оформлению
  • Как вывести сумму итераций цикла?

    @gliese581d Автор вопроса
    javedimka, set starting population size: 9
    set ending population size: 1200
    years: 1~/ $

    вывод до return, выводит число одной итерации. разве он не должен сначала посчитать все выполненные циклы, а потом уже вывести полученное число?
    Мне так это логически представляется, не знаю как в си это реализовано.
  • Почему первый цикл запускается повторно?

    @gliese581d Автор вопроса
    res2001, Большое спасибо за помощь. Я прохожу гарвардский курс cs50, аргументы вроде как не упоминали в курсе, видимо они эту задачу каким-то другим путем решают.
  • Почему первый цикл запускается повторно?

    @gliese581d Автор вопроса
    Я думал, что при сравнении, в условии он не будет вызываться.
    Каким образом можно передать сохраненный результат в другую функцию?
    В курсе этого нет, по запросу выдает только scanf и т.п., которые не получается применить в этой программе.
  • Куда вписать printf?

    @gliese581d Автор вопроса
    Roman, точно, большое спасибо за разъяснения.
  • Куда вписать printf?

    @gliese581d Автор вопроса
    @myjcom
    Можете подсказать пожалуйста, по след. вопросу:

    Написал рабочий код через оператор do while
    #include <cs50.h>
      #include <stdio.h>
    
      int get_number(void);
    
      int main(void)
    {
    int n;
    
    do
    {
     n=get_int ("set up a size population:");
    }
    while ((n = get_int("it should be more than 9: ")) < 9);
    {
    return n;
    
    }
    }


    Одного понять не могу, почему вот такой код не работает как тот, что выше (не исполняет команду printf:
    #include <cs50.h>
      #include <stdio.h>
    
      int get_number(void);
    
      int main(void)
    {
    int n;
    
    do
    {
     n=get_int ("set up a size population:");
    }
    while (n< 9);
    {
    printf ("it should be equal or greater than 9:")
    return n;
    
    }
    }


    Зачем повторно декларировать (не знаю как правильно это назвать) n=get_int в этой строке,
    while ((n = get_int("it should be more than 9: ")) < 9);

    если она уже есть выше.
    Это язык такой специфический?
    Ранее проходил курс по программированию в Swift, там все как-то логичнее, проще.
  • Куда вписать printf?

    @gliese581d Автор вопроса
    Как коротко и лаконично все оказалось)
    хотя такого способа, к сожалению, в курсе не рассматривалось. Спасибо за помощь.
  • Куда вписать printf?

    @gliese581d Автор вопроса
    5fb4054757e7d341600591.png@wisgest, Не пойму куда именно вписать команду.
    Вот рабочая программа, но она выводит нужный мне комментарий когда введено число 9 и выше, а должно быть наоборот. printf на других строках делает программу нерабочей.
    #include <cs50.h>
      #include <stdio.h>
    
      int get_number(void);
    
      int main(void)
    
    {
     int i=get_number();
    
    }
    
    int get_number(void)
    
    {
    int n;
    do
     { n= get_int("set a starting population size ");
    }
    
    while (n<9);
    printf("it should be greater than or equal to 9");
    return n;
    
    }