моя функция внутри программы c не работает - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь создать две отдельные функции в моей программе на c: первая программа считывает массивы (имена фотографов и их точки) , а вторая отображает все имена и точки. (с командой printf)

Но программа не запускает мою вторую функцию.Что не так с моей функцией?

Заранее спасибо

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

    void readdata(char name[15][15],float points[15]);
    void printdata(char name[15][15],float points[15]);

int main () 
{
    char names[15][15];
    float points[15];




        readdata(names,points);
        printdata(names,points);



    return 0;

}

    void readdata(char name[15][15],float points[15])   
    {
        int i;
        int n;

        printf("Please enter the number of photographers ( The value should be less than 15)\n");
        scanf("%d",&n);
        while(n<0 || n>15)  
        {
            printf("PLEASE ADD NUMBER BETWEEN 1 AND 15\n");
            scanf("%d",&n);
        }

        for(i=0; i<n;i++)   
        {
            scanf("%s%f", name[i],&points[i]);

        }
    }


    void printdata(char name[15][15],float points[15])
        {

            int i;
            int n;
            for(i=0; i<n;i++) 
            {
                printf("%s\t", name[i]);
                printf("%.f\n", points[i]);
            }
        }

Ответы [ 3 ]

0 голосов
/ 24 ноября 2018

Размер вашего массива (значение n) должен быть определен глобально.Как сказал @ user9849588, локальные переменные доступны только из соответствующих функций.

Чтобы решить эту проблему, вам нужно передать количество ваших фотографов n в readdata и printdata функций.

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

void readdata(char name[15][15],float points[15], int n);
void printdata(char name[15][15],float points[15], int n);

int main () 
{
    char names[15][15];
    float points[15];
    int size;
    printf("Please enter the number of photographers ( The value should be less than 15)\n");
    scanf("%d",&size);
    while(size<0 || size>15)  
    {
        printf("PLEASE ADD NUMBER BETWEEN 1 AND 15\n");
        scanf("%d",&size);
    }
    readdata(names,points,size);
    printdata(names,points,size);



return 0;

}

void readdata(char name[15][15],float points[15],int n)   
{
    int i;

    for(i=0; i<n;i++)   
    {
        scanf("%s%f", name[i],&points[i]);

    }
}


void printdata(char name[15][15],float points[15],int n)
    {

    int i;
    for(i=0; i<n;i++) 
    {
        printf("%s\t", name[i]);
        printf("%.f\n", points[i]);
    }
}
0 голосов
/ 24 ноября 2018

Вы используете n и i в двух разных функциях и не определяете их глобально, что означает i readdata () не совпадает с i в данных печати (). Это локальные переменные, и локальные переменные доступны только в функции, в которой вы их объявили.Используйте аргументы для передачи значения в printdata (), которое будет возвращено readdata ().

Надеюсь, это поможет.

0 голосов
/ 24 ноября 2018

В вашей функции printdata() переменная int n; неинициализирована.Переменная n здесь отличается от переменной n, которую вы определили в вашей функции readdata().Это локальные переменные и доступны только из соответствующих функций.

readdata() должен возвращать n, а printdata() должен принимать его в качестве аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...