Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/50: Рейтинг темы: голосов - 50, средняя оценка - 4.82
408 / 227 / 43
Регистрация: 10.02.2013
Сообщений: 780
1

Создание меню в консоли

30.06.2013, 21:07. Показов 9182. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
не могу понять почему не хочет работать программа при заходе в 1 case
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <conio.h>
 
int main ()
{
    int diya;
    do
    {
        printf("1- Добавление в файл\n");
        printf("2- Обработка файла\n");
        printf("0-Выход\n");
        scanf("%i\n", &diya);
        if(diya == 0)
            break;
        switch(diya)
        {
            case 1:
            {
                struct tov {char last_name[10]; int predmet1; int predmet2; int predmet3;} x, x1;
                FILE *f;
                if ((f=fopen("D:\\reyting.txt", "wb"))==NULL)
                {
                    printf("Невозможно открыть файл.\n");
                }
                else
                    printf("Файл відкритий\n");
 
                int z=0;
                printf("Введите количество добавляемых записей\n");
                scanf("%i", &z);
                printf("\t\tДобавление записей про студентов:\n");
                do
                {
                    //printf("\tВведите данные про студента\n");
                    printf("Фамилия:\t");
                    scanf("%s",&x.last_name);;
                    printf("Введите оценки по 3 предметам:\n");
                    scanf("%d",&x1.predmet1);
                    scanf("%d",&x1.predmet2);
                    scanf("%d",&x1.predmet3);
                    fwrite(&x,sizeof(x),1,f);
                    z--;
                }
                while (z==0);//getch()!=27
                fclose(f);
            }
            break;
            case 2:
            {
                ;
            }
            break;
            default:
            printf("Не выбран ни один из пунктов текстового меню");
            break;
        }
    }
    while(true);
    return 0;
}
что пропустил ?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2013, 21:07
Ответы с готовыми решениями:

Создание в Консоли циклического меню
public static void main(){ Console.Write(&quot; Введите номер товара для просмотра детальной...

Создание меню в консоли (не контекстное)
Доброй ночи, кому вечеру и утру в Америке. Сижу на втором курсе и еще до такой темы не доходили,...

Создание меню в консоли через case
Кто может помочь объяснить, как сделать меню, а то сколько не пробую, у меня все время ошибки. Надо...

Создание меню в консоли для работы с классом "Дробь"
очень нужна помощь,как надо описать сложение вычитание умножение и деление дробей в меню ,хотя бы...

7
123 / 123 / 82
Регистрация: 03.01.2013
Сообщений: 242
01.07.2013, 00:04 2
Структура программы у вас уж слишком запутанная
struct вроде в начале пишут и переменные объявляют тоже там же (FILE тоже)
1
408 / 227 / 43
Регистрация: 10.02.2013
Сообщений: 780
01.07.2013, 00:21  [ТС] 3
да хоть вначале хоть в case все равно ничего не меняется
0
134 / 132 / 51
Регистрация: 25.05.2013
Сообщений: 233
01.07.2013, 00:45 4
C
1
2
3
4
5
...
scanf("%i", &diya); // убрать \n
...
scanf("%s",x.last_name) // убрать амперсанд
...
0
Z3JheSBoYXQ=
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
01.07.2013, 16:03 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
#include <stdlib.h>
 
struct tov {
             char last_name[10]; 
             int predmet1; 
             int predmet2; 
             int predmet3;
           };
 
 
int viewMenu(char *fname);
int addFile(char *fname);
int readFile(char *fname);
 
 
int main(int argc, char * argv[])
{
    int ch;
    char *fname = "students.db";
    
    while(viewMenu(fname) && scanf("%d", &ch) && ch != 0){
        switch (ch) {
            case 1:                 
                     addFile(fname);
                     break;
            case 2:  
                     printf("2\n");
                     break;
        }
            
    }
    return 0;
}
 
int viewMenu(char *fname)
{               
        FILE *fp;               
        int count =0, flag = 0;
        struct tov some;
        
        
        if (!(fp=fopen(fname, "r")))
            flag = 0;
        else{
            while(!feof(fp)){
                fread(&some, sizeof(some),1,fp);
                count++;
            }
            flag = 1;           
        }       
        fclose(fp);                         
        
        if (flag) 
            printf("Количество записей %d\n", count);
        else
            printf("файл не создан\n");
        printf("1- Добавление в файл\n");
        printf("2- Обработка файла\n");
        printf("0-Выход\n");
        printf("Ваш выбор: ");                
        return 1;        
}
 
int addFile(char *fname)
{
    FILE *fp;
    struct tov newstr;
    int count=0;
    
    
    if(!(fp=fopen(fname, "ab"))){  // open to append new records postition file move to end file
        printf("error open %s file\n", fname);
        exit(1);
    } 
    printf("File %s success opened\n", fname);
    
    while(printf("Количество новых записей [0 - exit]: ") && scanf("%d", &count) && count != 0 ){
        int x = 0;
        for(; x<count; x++){
            printf("Добавление новых записей \n");
            printf("Фамилия:\t");
            scanf("%s",newstr.last_name);;
            printf("Введите оценки по 3 предметам:\n");
            scanf("%d",&newstr.predmet1);
            scanf("%d",&newstr.predmet2);
            scanf("%d",&newstr.predmet3);
            fwrite(&newstr,sizeof(newstr),1,fp);            
        }       
    }
    fclose(fp);
    return 0;                                       
}
int readFile(char *fname)
{
    
    return 0;
}
старайтесь реализовывать все через функции, как малы они бы не казались. Это повысит читаемость, гибкость, и отладку кода. Я реализовал функцию добавление записей в файл и вывод меню. Прототипы функций сверху, функцию чтения и показа записей реализуйте сами, по аналогии с чтением.
1
3 / 3 / 0
Регистрация: 23.06.2013
Сообщений: 13
01.07.2013, 17:06 6
Цитата Сообщение от shurikspk Посмотреть сообщение
да хоть вначале хоть в case все равно ничего не меняется
Попробуй использовать систему If else if

Добавлено через 18 минут
Цитата Сообщение от fanatdebian Посмотреть сообщение
C
1
    char *fname = "students.db";
Это ты какой то файл подключаеш или просто задаеш значение в виде слова?
0
Z3JheSBoYXQ=
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
01.07.2013, 18:10 7
Цитата Сообщение от Izeldor Посмотреть сообщение
Попробуй использовать систему If else if

Добавлено через 18 минут

Это ты какой то файл подключаеш или просто задаеш значение в виде слова?
задаю в виде слова, имя файла может быть любым. Если файла нет, программа создаст его автоматом с 0 количеством записей в нем.
0
408 / 227 / 43
Регистрация: 10.02.2013
Сообщений: 780
01.07.2013, 19:20  [ТС] 8
суть была в том что именно нужно делать в той конструкции
по поводу отдельных функций я знаю но все равно СПАСИБО)
0
01.07.2013, 19:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2013, 19:20
Помогаю со студенческими работами здесь

Меню на консоли
Здравствуйте! Изучаю C++, для практики ради делаю консольное меню через класс. Может быть мне,...

Меню в консоли
Меня интересует вот что: зачем в функции int menu(); вот это условие code=getch(); ...

Меню в консоли
Здравствуйте! У меня есть класс с реализованным меню, вот код: /// &lt;summary&gt; ///...

Меню в консоли c#
Помогите сделать меню в консоли, нужно что было было что то такое: Меню: 1. Ответ на задание №1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru