2015-10-21 3 views
0

Объявите структуру, которая описывает отдельную видеоигру. В видеоиграх есть название, жанр, платформа, разработчик, год выпуска, более низкий возрастной предел, цена и независимо от того, поддерживают ли они покупки в приложении. Вам нужно будет выбрать подходящие типы данных для каждой информации , которая будет храниться в структуре.Использование функций для печати структур

  • Назовите структуру: Video_Game.
  • Объявите три переменных структуры видеоигры локально в основной функции, называемой game1, game2 и game3.
  • Присвойте членам игры 1 подробную информацию о примере Candy Crush Saga (King, 2012) выше.
  • Присвойте членам игры 2 информацию о примере вышеприведенного примера Halo 4 (343 Industries, 2014).
  • Присвоить членам игры 3 информацию о вашей любимой игре ... если вы не играете в игры, проверьте свой смартфон ... конечно, вы играете что-то там ... если нет, проверьте соответствующий магазин приложений лучшие графики и найти игру, которая может стать вашим новым фаворитом!
  • Затем объявите функцию, называемую print_video_game_details(), которая принимает параметр , который является указателем на ранее описанную структуру видеоигр. В этой функции распечатайте детали игры , переданной функции, в стиле, показанном выше для примеров Candy Crush Saga и Halo .
  • Затем вызовите функцию print_video_game_details три раза с главной, передав в адрес адрес игры1, game2 и game3 после того, как все участники были установлены.

Мой код до сих пор:

#include <stdio.h> 
#include <string.h> 

struct video_game 
{ 
    char* title; 
    char* genre; 
    char* developer; 
    int year; 
    char* platform; 
    int lower_age; 
    float price; 
    char* inapp_purchase; 
}game1, game2; 

void print_video_game_details() 
{ 
    for(int i =1; i<=3; i++) 
    { 
     printf("Title: %s", game[i].title); // game[i] is showing an error "undeclared" 
     printf("Genre: %s", game[i].genre); 
     printf("Developer: %s", game[i].developer); 
     printf("year of release: %d", game[i].year); 
     printf("platform: %s", game[i].platform); 
     printf("lower age: %d", game[i].lower age); 
     printf("price: %f", game[i].price); //is showing an error "incompatible" 
     printf("inapp_purchase: %s", game[i].inapp_purchase); 
    } 
} 

int main(void) 
{ 
    game1.title = "Candy crush saga"; 
    game1.genre = "Match-Three Puzzle"; 
    game1.developer = "King"; 
    game1.year = "2012"; 
    game1.platform = "Android, ios, Windows Phone"; 
    game1.lower_age = "7"; 
    game1.price = "$0.00"; 
    game1.inapp_purchase = "yes"; 
    print_video_game_details(); 
} 

Я не могу распечатать структуру, поскольку он не будет компилироваться.

ОШИБКИ:

prog.c: In function 'print_video_game_details': 
prog.c:27:33: error: 'struct video_game' has no member named 'lower' 
printf("lower age: %d", game[i].lower age); 
^ 
prog.c:27:40: error: expected ')' before 'age' 
printf("lower age: %d", game[i].lower age); 
^ 
prog.c: In function 'main': 
prog.c:39:15: warning: assignment makes integer from pointer without a cast [-Wint-conversion] 
game[0].year = "2012"; 
^ 
prog.c:41:20: warning: assignment makes integer from pointer without a cast [-Wint-conversion] 
game[0].lower_age = "7"; 
^ 
prog.c:42:16: error: incompatible types when assigning to type 'float' from type 'char *' 
game[0].price = "$0.00"; 
^ 
+2

Вам не хватает закрывающего кронштейна (}) в конце основного. И если он не будет компилироваться, вы должны отправить сообщение об ошибке, которое дает вам компилятор. – fefe

+0

Убедитесь, что вы фактически вызываете свой метод 'print_video_game_details' в конце основного, перед закрывающей скобкой. – AlexPogue

+0

@fefe Спасибо. Я отредактировал этот фрагмент. не могли бы вы взглянуть на него сейчас? – memg

ответ

1

эмитирует с вашим кодом:

  1. В строке: printf("lower age: %d", game[i].lower age);, lower age должен быть lower_age.
  2. Вы должны определить массив как struct video_game game[1];, если вы планируете использовать цикл в print_video_game_details()
  3. Для пределы контура должна начинаться i = 0 и уходят, а i < [however many games there are]
  4. Main должен определить game[0], game[1] и т.д., а не game1 , game2 и т.д.
  5. game[0].year является INT, поэтому не ставить 2012 в кавычках
  6. game[0].price с плавающей точкой, так что оставьте цитаты и удалить знак доллара ,

Вот код, который мы обсудили в комментариях. Он работает с одной видеоигрой.Вы можете увеличить число video_game game[x] и цикл for для поддержки нескольких видеоигр.

#include <stdio.h> 
#include <string.h> 

struct video_game 
{ 
    char* title; 
    char* genre; 
    char* developer; 
    int year; 
    char* platform; 
    int lower_age; 
    float price; 
    char* inapp_purchase; 
}game1, game2; 

struct video_game game[1]; 

void print_video_game_details() 
{ 
    int i; 
    for(i = 0; i < 1; i++) 
    { 
     printf("Title: %s\n", game[i].title); 
     printf("Genre: %s\n", game[i].genre); 
     printf("Developer: %s\n", game[i].developer); 
     printf("year of release: %d\n", game[i].year); 
     printf("platform: %s\n", game[i].platform); 
     printf("lower age: %d\n", game[i].lower_age); 
     printf("price: %f\n", game[i].price); 
     printf("inapp_purchase: %s\n", game[i].inapp_purchase); 
    } 
} 

int main(int argc, char* argv[]) 
{ 
    game[0].title = "Candy crush saga"; 
    game[0].genre = "Match-Three Puzzle"; 
    game[0].developer = "King"; 
    game[0].year = 2012; 
    game[0].platform = "Android, ios, Windows Phone"; 
    game[0].lower_age = 7; 
    game[0].price = 0.0; 
    game[0].inapp_purchase = "yes"; 
    print_video_game_details(); 
} 
+0

Примите ответ и поддержите, если это помогло :) – AlexPogue

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