2015-12-14 3 views
-3

Я хочу сделать программу, которая делает это (пример работы):Массивы и в то время как вместе

Give Product number: 10 
Give amount for product number 10: 32 
Do You wan to continue? y 
Give Product number: 3 
Give amount for product number 3: 11 
Do You wan to continue? y 
Give Product number: 322 
Give amount for product number 322: 63 
Do You wan to continue? n 
You entered following amount of products: 
product 3: 11 pcs 
product 10: 32 pcs 
product 332: 63 pcs 

Я что-то вроде этого сделано:

#include< stdio.h> 

main (void) 
{ 
    int product[15]; 
    int amount[15]; 
    char contnue; 
    char roska; 
    int n=0; 
    int i, j; 

    do 
    { 
     printf ("Give Product number: "); 
     scanf ("%d", &product); 
     printf ("Give amount for product number %d : ", product); 
     scanf ("%d%c", &amount, &roska); 
     printf ("Do You wan to continue? (y/n)\n"); 
     scanf ("%c", &contnue); 
    n=n+product[i]+amount[i]; 
    } 
    while (contnue == 'y'); 

    printf ("You entered following amount of products:\n"); 
     printf ("product %d:%d pcs\n%d", product, amount,n); 
} 

Может кто-нибудь мне помочь?

+0

Есть ли кто-нибудь, кто может помочь –

+0

У вас есть 15 разных продуктов или вы хотите прочитать максимум 15 заказов и добавить амонут в правильный продукт? –

+2

Помогите с чем? – csmckelvey

ответ

0

uI предположим, что вы хотите попросить пользователя ввести номер продукта и амонута, MAXN раз при макс. Я поставил ограничение на правильное выделение достаточной памяти массиву (если нет ограничений на то, сколько раз пользователь может вводить значения, которые вам придется динамически распределять и перераспределять память, но я думаю, что вы не хотите этого делать). Эта программа не проверяет, вводит ли пользователь один и тот же номер продукта несколько раз и не добавляет различные суммы. Считайте это лишь отправной точкой, по крайней мере, выяснить петли.

#include <stdio.h> 
#define MAXN 32 

int main(void) { 
    int product[MAXN]; 
    int amount[MAXN]; 
    int productNumber; 
    int productAmount; 
    int n_products = 0; 
    char answer; 

    do {      
     printf ("\nGive Product number: "); 
     scanf ("%d", &productNumber); 

     printf ("\nGive amount for product number %d : ", productNumber); 
     scanf ("%d", &productAmount); 

     product[n_products] = productNumber; 
     amount[n_products] = productAmount; 
     n_products++; 

     printf ("\nDo You want to continue? (y/n)\n"); 
     scanf (" %c", &answer);    /* note space before %c to skip leading whitespace */   
    } while (n_products < MAXN && (answer == 'y' || answer == 'Y')); 

    printf ("\nYou entered the following amount of products:\n"); 

    for (int i = 0; i < n_products; i++) { 
     printf ("product %d: %d pcs\n", product[i], amount[i]); 
    } 
    return 0; 
} 

С входом вы дали, например, окончательный вывод программы:

You entered the following amount of products: 
product 10: 32 pcs 
product 3: 11 pcs 
product 322: 63 pcs 
+0

спасибо, что ответили, но я думаю, что мой вопрос был не таким ясным, я хочу, чтобы программа сделала это, пожалуйста, проигнорируйте это «15», вот что я хочу: Дайте номер продукта: 10 Дайте сумму для номера продукта 10: 32 Вы хотите продолжить? y Да Код продукта: 3 Укажите сумму для номера продукта 3: 11 Вы хотите продолжить?y Код продукта: 322 Укажите сумму для номера продукта 322: 63 Вы хотите продолжить? n Вы ввели следующее количество продуктов: продукт 3: 11 шт. продукт 10: 32 шт. продукт 332: 63 шт. –

0

Вы можете использовать struct.

typedef struct node { 
    int productNumber[15]; 
    int amount[15]; 
} node; 

И объявить массив как тип узла

node product; 

Затем вы можете использовать product массив типа node для хранения данных.

В вашем коде вы не увеличиваете счетчик i, что означает, что каждый раз, когда вы вводите данные, хранящиеся там же, заменяя другое.

Также, когда вы не печатаете содержимое массива в правильном направлении.

Я немного модифицировал ваш код, он работает как вы хотите, как упоминание в комментариях. См. Это

#include<stdio.h> 

int main() 
{ 
    int product[15]; 
    int amount[15]; 
    char contnue; 
    int n = 0; 
    int i = 0; 
    int j = 0; 

    do 
    { 
     printf ("Give Product number: "); 
     scanf ("%d", &product[i]); 
     printf ("Give amount for product number %d : ", product[i]); 
     scanf ("%d", &amount[i]); 
     printf ("Do You wan to continue? (y/n)\n"); 
     scanf (" %c", &contnue); /*space before %c to skip leading whitespace */ 
     i++; 
    } 
    while (contnue == 'y'); 

    printf ("You entered following amount of products:\n"); 
    for (j = 0; j < i; j++) 
     printf ("product %d:%d\n", product[j], amount[j]); 
} 

Надеюсь, это желание, которое вы пытаетесь сделать.

+0

спасибо за ответ, пожалуйста, проигнорируйте это «15», я хочу, чтобы программа делала так: Дайте номер продукта: 10 Дайте сумму для номера продукта 10: 32 Вы хотите продолжить? y Да Код продукта: 3 Укажите сумму для номера продукта 3: 11 Вы хотите продолжить? y Код продукта: 322 Укажите сумму для номера продукта 322: 63 Вы хотите продолжить? n Вы ввели следующее количество продуктов: продукт 3: 11 шт. продукт 10: 32 шт. продукт 332: 63 шт. –

+0

Я сменил ваш код. Попробуйте запустить это. –

Смежные вопросы