2016-10-15 3 views
0

Основной объект программы - отображать значения в массиве, называемом «каналы», но я не могу ничего получить. показать. После отображения дисплея мне нужно предложить пользователю выбрать один из четырех каналов и отобразить выбранное значение «канал». Это то, что я до сих пор. Я также не могу использовать какие-либо петли. Пожалуйста помоги.Как отобразить содержимое массива и предложить пользователю сделать выбор {C}

#include <stdio.h> 

// Я использую структуру для хранения всех значений в массиве

typedef struct 

{ 
    char* name; 
    double n; //roughness 
    double slope; 
    double width; 
    double depth; 

} CHANNEL; 


main() 
{ 

    CHANNEL channels [4] = { 
    {"Channel1", 0.035, 0.0001, 10.0, 2.0}, 
    {"Channel2", 0.020, 0.0002, 8.0, 1.0}, 
    {"Channel3", 0.015, 0.0010, 20.0, 1.5}, 
    {"Channel4", 0.030, 0.0007, 24.0, 3.0} 
    }; 

// Я хочу, чтобы отобразить все каналы и их значения прямо здесь ... Я знаю, нужно использовать printf, но мне нужно будет использовать указатель?

printf("Please note:\n 0 = Channel 1 \n 1 = Channel 2 \n 2 = Channel 3 \n 3 = Channel 4); 

// Эта часть только для выбранного канала

printf(Pick a channel from 0-3\n"); 
    int c = 0; 
    scanf("%i", &c); 
    CHANNEL chosen = channels [c]; 

} 
+1

Вы ничего не печатаете или не просите ввести какой-либо пользовательский ввод. Также этот код даже не компилируется. Что вы на самом деле пытались сделать? – UnholySheep

+0

Почему вы не можете использовать цикл? Кажется, это естественный способ сделать это. – usr2564301

+0

Член 'name' вашей структуры - это только один символ. –

ответ

0

Во-первых, внесите изменения, предложенные Даниэлем Литваком. Затем, чтобы получить информацию от пользователя, вы должны сделать что-то вроде:

int main(void) { 

    // ... 
    printf("Pick a channel from 0-3\n"); 
    int c = 0; 
    scanf("%i ", &c); 

    CHANNEL chosen = channels[c]; 

    printf ("The channel chosen is %s, n = %f, slope = %f and the depth = %f", chosen.name, chosen.n, chosen.slope, chosen.depth); 
} 

это будет запрашивать у пользователя индекса, обозначающего индекс канала в массиве. Если хотите, вы также можете распечатать все варианты каналов.

Для демонстрационных целей я оставил выбранный канал в переменной chosen, и вы можете действовать так, как хотите.

EDIT: Проверка ошибок не выполняется, чтобы гарантировать, что c находится в зоне действия. Это делается для того, чтобы не отображать лишний, запутывающий код.

+0

Как бы напечатать значения выбранного канала: – aaa

+0

printf («выбран выбранный канал:% s, n =% d, наклон =% d и глубина =% d»); – aaa

+0

@AjAlmero: Я обновил свой ответ. Также обратите внимание, что печать 'double' выполняется с помощью'% f'. – Charles

0

проблема может быть, что у вас есть строка в месте полукокса, простое решение было бы изменить к-структуру :

typedef struct{ 
char* name; 
double n; 
double slope; 
double depth; 
} CHANNEL; 
Смежные вопросы