Crulas Ответов: 2

Нужна помощь с упражнением по программе Си


Поэтому в настоящее время я пишу программу, которая выполняет такие функции, как счет-фактура заказа. Пользователь вводит цену товаров и количество товаров, которые он хочет.

Пример
1.42 - цена
2.25
30.21
0 200 -номер товара и его качество
1 400
2 100

Итак, моя проблема заключается в том, как я могу различать входные данные цены и номер товара, ввод количества?

Что я уже пробовал:

Я уже писал

#include <stdio.h>

int main(void)
{
	
	int item ;
	float value;
	float price[300];
	for (item = 0;( Missing Condition to exit);item++)
	{
		scanf("%f",&value);	
		price[item]=value;
		      
			
	
	}	
	
	
}	


Который работает для ввода цены товара.
Я не знаю, как перейти к вводу номера изделия и количества.

Rick York

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

Rick York

Попробовать это :

gets( buffer ); // получить строку от пользователя
if( strchr( buffer, ' ' ) )
{
// пробел обнаружен - считывание товара и количества
}
еще
{
// нет места - должна быть цена
}

2 Ответов

Рейтинг:
2

Richard MacCutchan

Подумайте о том, как бы вы сделали это в магазине.

You: I would like to buy some widgets.
Shopkeeper: Certainly madam, which size?
You: the big ones.
Shopkeeper: And how many would you like?
... etc.


Поэтому вам нужно сделать что-то подобное.
Print a message asking for some information.
Read the user's response.
Check that what they have entered is valid.
Repeat the above for each item of information.
Do the various calculations.
Print the results.


Рейтинг:
16

CPallini

Предполагая, что ваш ввод без замечаний, т. е.

1.42
2.25
30.21
0 200
1 400
2 100

Вы можете прочитать всю строку, тест, если она содержит два целых числа (номер и количество) или просто поплавок (цена). То есть
#include <stdio.h>

#define ITEMS 300
int main(void)
{
  float price[ITEMS];
  int items = 0;

  int item_no;
  int item_qty;

  char line[80];

  while ( fgets(line, sizeof(line), stdin) && items < ITEMS )
  {
    if ( sscanf(line, "%d %d", &item_no, &item_qty) == 2)
    {
      if  (item_no < items)
        printf("item n. %d, item quatity %d, price = %f\n", item_no, item_qty, price[item_no] * item_qty);
    }
    else
    {
      if ( sscanf(line, "%f", &price[items]) == 1)
        ++items;
    }
  }
  return 0;
}