Задача
Вернемся к сортам гороха с желтыми (аллель [latex]R[/latex]) и зелеными (аллель [latex]r[/latex]) семядолями ( смотри предыдущую задачу). Были подвергнуты скрещиванию два растения, одно из которых имело зеленые семядоли. В результате скрещивания получили [latex]m[/latex] растений [latex]F_{1}[/latex] (смотри задачу 785) с желтыми семядолями и [latex]n[/latex]- с зелеными [latex]m\geq 0,n\geq 0 [/latex]. Используя законы Менделя, указать наиболее вероятное сочетание аллелей [latex]R[/latex] и [latex]r[/latex] в генотипе второго родителя и в генотипах каждого их растений [latex]F_{1}[/latex]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#include <cstdlib> #include <iostream> using namespace std; const int END = true, NEND = false; int forout(const char* s, int n, bool end) { for( int i=0 ; i<n ; i++ ) { cout << s << ((i+1 != n || !end)? ", ": (end? "\n" : "")); } } int main(){ int yellow, green; cin >> yellow >> green; if(yellow == 0){ if(green != 0) { cout << "P: rr X rr\n"; cout << "F1: "; forout("rr", green, END); } else { cout << "P: Один из родителей будет обладать генотипом rr, а второй может быть каким угодною.\n"; } } else if(green == 0){ cout << "P: rr x RR\n"; cout << "F1: "; forout("Rr", green+yellow, END); } else { cout << "P: rr x Rr\n"; cout << "F1: "; forout("Rr", yellow, NEND); forout("rr", green, END); } } |
Тесты
input | output |
3 2 | P: rr x RR F1: RR, Rr, Rr, rr, rr |
8 9 | P: rr x Rr F1: Rr, Rr, Rr, Rr, Rr, Rr, Rr, Rr, rr, rr, rr, rr, rr, rr, rr, rr, rr |
Решение
Cоздаем функцию для вывода последовательностей. Мы рассматриваем два варианта конечная эта последовательность или к ней будут добавляться еще элементы, соответственно END или NEND. Если последовательность не конечная то после каждого элемента мы выводим запятую с пробелом. Если же последовательность не конечная, то выполняется перевод на новую строку. У нас дан гомозиготный рецессивный ген и количество потомков с указанием сколько потомков с каким фенотипом (внешнее проявление гена). Следовательно у нас есть несколько вариантов [latex]rr x RR[/latex], тогда все родители будут желтыми, так как каждый потомок получит по половине качества, то есть каждый потомок будет иметь такой ген [latex]Rr[/latex] следовательно он будет желтым. Если же все будут зелеными, то второй предок тоже был [latex]rr[/latex] . Значит у нас получается, что у родителей [latex]rr[/latex] и [latex]rr[/latex] получаются все дети [latex]rr[/latex]. Остается еще два варианта, если у нас нет не зеленых не желтых детей, значит у нас нет потомства, а если же у нас есть и желтые и зеленые дети , то остается только один вариант, что второй родитель был [latex]Rr[/latex], а это значит, что в потомстве все кто желтые [latex]Rr[/latex], а все кто зеленые [latex]rr[/latex]
Для отправки комментария необходимо войти на сайт.