Пане podolets98, ось вам кілька правил, які значно спростять вам життя на форумах з програмування:
- ніколи не питайте на форумі словами "не працює", "працює не так", "лається на помилки". Замість того описуйте, що конкретно відбувається: якщо отримали повідомлення про помилку - відтворюйте його повністю, якщо програма виводить не те, що ви очікували - пишіть і те, що виводить, і те, що очікували.
- адекватно "перекладати" з однієї мови програмування на іншу зазвичай не простіше, ніж писати з нуля. Особливо видатні особи іноді при цьому навіть завдання не пишуть, що робить завдання значно складнішим, ніж було на початку - бо треба спершу по коду, часто-густо кривому, відновити завдання, а потім написати це завдання з нуля іншою мовою. Не робіть так.
- робіть в коді відступи. 90% часу програміст не пише код, а читає його, тому будь-що, що полегшує читання і вимагає збільшення часу кодування менш ніж у 10 разів, є корисним. На кожному begin (чи {) збільшуйте відступ на 2(4) пробіли, на end (}) - зменшуйте. Способів розставлення відступів є кілька, почитайте про це в мережі, оберіть свій стиль і дотримуйтеся його. Це дуже спрощує життя - і вам, і тим, хто хоче вам допомогти.
- якщо у вас якийсь особливий (нестандартний, дуже старий, експерементальний) компілятор, вказуйте це. Ваш код явно розрахований на C++ до стандарту 1998 року, тобто компілятор старий. Один рядок "пишу на (назва компілятора) під (фреймворк, якщо використовується)" іноді дозволяє вирішити проблему за кілька хвилин - то чому б не витратити на нього 10 секунд.
І quez хотів сказати, що for(ініціалізація;умова;перехід){тіло;} в C/C++ еквівалентний
ініціалізація;
while(умова){
тіло;
перехід;
}
Потім p1=p1+1; записується як ++p1;
Останнє, що вам треба для рішення - це знати, що оператор / має 2 значення: для цілих аргументів він дає цілу відповідь (1/2 == 0), для дійсних - дійсну, що вам і потрібно: float(p1)/float(p2);