#c #loops
#c #циклы
Вопрос:
Итак, я застрял в цикле while.
Я не могу использовать массивы.
Я должен взять список чисел (с плавающей запятой / double), (предполагая, что первое число положительное и представляет цену товара в магазине), если следующее число отрицательное, я должен уменьшить старую цену из суммы и добавить новую цену, которая является старой ценой минус процент (отрицательное число), а затем сохраните его в sum.
Я как бы заблудился, пытаясь разобраться в этом, и был бы признателен за любую помощь.
Я использую C.
Это то, что я получил до сих пор:
int main() {
float factor = 0, avgPrice = 0, sum = 0, productPrice = 0, temp = 0;
int productCount = 0;
printf("Enter a positive factor: ");
scanf("%f", amp;factor);
while (factor < 0.0001) {
printf("Invalid factor. Please enter again: ");
scanf("%f", amp;factor);
}
printf("Enter the list of products in the shopping cart: ");
scanf("%f", amp;productPrice);
if (productPrice <= 0) {
printf("Error! Invalid input.");
return 1;
}
sum = productPrice;
productCount ;
float sumCopy = 0;
float priceDeduction = 0;
temp = productPrice;
while (scanf("%f", amp;productPrice) != 0) {
if (productPrice == 0) {
break;
}
sumCopy = sum;
if (productPrice < 0) {
sum -= temp;
priceDeduction = (temp * productPrice) / 100;
temp -= priceDeduction;
sum = temp;
}
if (productPrice > 0) {
productCount ;
sum = productPrice;
temp = productPrice;
}
}
printf("Final payment: %.2f", sum);
}
Комментарии:
1. Начните с редактирования вашего сообщения, чтобы исправить отступ.
2. Если вы застряли в этом цикле
while(scanf("%f",amp;productPrice)!=0)
, пожалуйста, объясните, что вы думаете об этом условии. Обратитесь к описанию возвращаемого значения en.cppreference.com/w/c/io/fscanf3. Какой ввод использовался?
4. Эй, если решение вопроса было полезным, укажите это так, или если вы нашли ответ на свой вопрос, пожалуйста, укажите это. Stackoverflow похож на энциклопедию. Многие люди используют его, и у кого-то еще может возникнуть такая же проблема.
Ответ №1:
Если я правильно понял ваш вопрос, то вы хотите найти общую цену. Я не понимаю, почему вы написали оператор Scanf в while и что является фактором. Он больше нигде не используется
Я пишу решение для приведенного выше утверждения.
#include <stdio.h>
#include <math.h>
int main() {
char ch = 'N';
int p, sp;
int sum = 0;
do
{
printf("Enter the product price: ");
scanf("%d", amp;p);
if (p > 0)
{
//temp = productPrice;
sum = p;
}
else
{
printf("Please enter a valid first product price.n");
break;
}
printf("Enter the second product price: ");
scanf("%d", amp;sp);
if (sp > 0)
{
sum = sp;
}
else if (sp < 0)
{
sum = sp;
}
printf("nAre you done with the list of products to buy? enter Y or N ");
scanf(" %c", amp;ch);
}while(ch == 'N');
printf("The final payment is %d ", sum);
}