2015-11-16 2 views
-5

Я кодирую мастерскую для своего класса (я полный новичок), и у меня возникают некоторые проблемы.Программирование проблем для школы

#include <stdio.h> 

#define arraylength 100 

void GetInt(); 
void GetFloar(); 

int main (void) 
{ 
    int i, k, j; 

    float price[arraylength]; 
    int barcode[arraylength]; 
    int quantity[arraylength]; 
    int lenght; 
    printf("Grocery Store Inventory\n"); 
    printf("=======================\n"); 

    for (i = 0; i < arraylength; i++) { 
     printf("Barcode: "); 
     scanf("%d", &barcode[i]); 
     GetInt; 
    } 

    if (barcode[i] == 0) 
     break; 

    printf("Price: "); 
    scanf("%f", &price[i]); 
    printf("Quantity: "); 
    scanf("%d", &quantity[i]); 
    return 0; 
} 

void GetInt() 
{ 
    int number; 

    printf("Barcode: "); 
    while (scanf("%d", &number != 1)){ 
     printf("Wrong Input , Try Again!\n"); 
     printf("Insert Correct Barcode:\n"); 
     while(getchar() != "\n"); 
    } 
    return number; 
} 

void GetFloat() 
{ 
    float number; 
    printf("Barcode: "); 
    while (scanf("%d", &number != 1)){ 
     printf("Wrong Input , Try Again!\n"); 
     printf("Insert Correct Barcode:\n"); 
     while (getchar() != "\n"); 
    } 
    return number; 
} 

я получаю эти ошибки:

work.c: In function ‘main’: 
work.c:23:5: error: break statement not within loop or switch 
work.c: In function ‘GetInt’: 
work.c:35:26: warning: comparison between pointer and integer [enabled by default] 
work.c:38:18: warning: comparison between pointer and integer [enabled by default] 
work.c:40:3: warning: ‘return’ with a value, in function returning void [enabled by default] 
work.c: In function ‘GetFloat’: 
work.c:45:26: warning: comparison between pointer and integer [enabled by default] 
work.c:48:25: warning: comparison between pointer and integer [enabled by default] 
work.c:50:7: warning: ‘return’ with a value, in function returning void [enabled by default] 

Может кто-нибудь сказать мне, что происходит, и как исправить эту проблему?

+0

Компиляция с предупреждениями: 'void GetFloar();' -> 'void GetFloat();', 'GetInt;' -> 'GetInt();' –

+0

Подсказка: все сообщения об ошибках имеют имя файла, строка номер и номер столбца, например 'work.c: 23: 5' - строка 23 столбца 5 в« work.c ». BTW, потратив немного времени на форматирование вашего кода, значительно облегчает просмотр ошибок. – user3386109

+0

Ну, вы не можете сломаться от основного, для одного. –

ответ

0

Я попытаюсь указать на все ошибки, я могу видеть в коде

#include <stdio.h> 

#define arraylength 100 
//this might as well be: const int arraylength = 100; 

void GetInt(); 
void GetFloar(); //this is spelled wrong 

int main (void) 
{ 
    int i, k, j; 

    float price[arraylength]; 
    int barcode[arraylength]; 
    int quantity[arraylength]; 
    int lenght; //this is spelled wrong 
    printf("Grocery Store Inventory\n"); 
    printf("=======================\n"); 

    for (i = 0; i < arraylength; i++) { 
     printf("Barcode: "); 
     scanf("%d", &barcode[i]); 
     GetInt; //this does nothing; to call GetInt, use GetInt() 
    } 

    if (barcode[i] == 0) // i == arraylength here so this is illegal 
     break; //you can only break from a loop or a switch statement 

    printf("Price: "); 
    scanf("%f", &price[i]); // i == arraylength here so this is illegal 
    printf("Quantity: "); 
    scanf("%d", &quantity[i]); // i == arraylength here so this is illegal 
    return 0; 
} 

void GetInt() //this should be declared as int GetInt(void) 
{ 
    int number; 

    printf("Barcode: "); 
    while (scanf("%d", &number != 1)){ 
    //&number != -1 is not a valid parameter for scanf 
    //Seems like it should be scanf("%d", &number) != 1 
     printf("Wrong Input , Try Again!\n"); 
     printf("Insert Correct Barcode:\n"); 
     while(getchar() != "\n"); 
    } 
    return number; //you can't return from a void function 
} 

void GetFloat() //this should be declared float GetFloat(void) 
{ 
    float number; 
    printf("Barcode: "); 
    while (scanf("%d", &number != 1)){ 
    //&number != -1 is not a valid parameter for scanf 
    //also you have the integer format string there 
    //Seems like it should be scanf("%f", &number) != 1 
     printf("Wrong Input , Try Again!\n"); 
     printf("Insert Correct Barcode:\n"); 
     while (getchar() != "\n"); 
    } 
    return number; //you can't return from a void function 
} 

Вы должны использовать парный вместо поплавков. Я не уверен, где поплавки полезны, помимо обработки графики.

0

Если у вас есть возвращаемые значения в функциях, они не могут быть недействительными, они должны быть Int (в вашем случае): функция

int GetInt(); 
int GetFloat(); 

Ваш зсапЕ() является incorret, потому что вы не можете сравнить значения в нем, она должна быть:

while(scanf("%d", &number) != 1) 

на функции GetInt() и:

while(scanf("%f", &number) != 1) 

на GetFloat(), потому что вы работаете с поплавками. В функции main() вы ничего не ломаете, это ошибка. Ваш код должен быть:

for (i = 0; i < arraylength; i++) { 
    printf("Barcode: "); 
    scanf("%d", &barcode[i]); 
    GetInt(); 
    if (barcode[i] == 0){ 
     break; 
    }else{ 
     printf("Price: "); 
     scanf("%f", &price[i]); 
     printf("Quantity: "); 
     scanf("%d", &quantity[i]); 
    } 
} 

С некоторыми основными договоренностями.

+0

Я думаю, он имел в виду следующие 4 строки, которые должны быть в цикле for, а также –

+0

Спасибо за ваше предложение, я этого не заметил. – MoonWalker

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