Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
alexyoung
0 / 0 / 0
Регистрация: 25.06.2010
Сообщений: 6
#1

Словарик/Тестер - C++

29.07.2010, 15:49. Просмотров 457. Ответов 4
Метки нет (Все метки)

Добрый день! Необходимость параллельного с си изучения и другого языка - английского навела меня на мысль написать простой словарик - и одновременно проверщик запоминания. Привожу код на си той части которая должна записывать новые слова в словарь:

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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
struct word
{
char Eng[35];
char TransOne[50];
char TransTwo[50];
} New;
 
int main()
{
FILE *f;
char *voc = "vocabulary.txt";
char c = 'y';
 
    f = fopen( voc, "a" );
 
    while ( c == 'y' )
    {
        printf("Вводи уже слово, неуч :");
        scanf( "%s", New.Eng );
 
        printf("Терерь основной перевод :");
        scanf( "%s", New.TransOne );
 
        printf("Другое значение.Если нет такого введи -- :");
        scanf( "%s", New.TransTwo );
 
        
 
        fprintf( f, "%s -- %s , (%s)\n", New.Eng, New.TransOne, New.TransTwo );
 
        printf( "Будешь еще записывать? Введи y если да :" );
        scanf( "%c", &c ); 
            
    }
 
    fclose(f);
 
  return EXIT_SUCCESS;
}
Проблема в следующем: не производится повторный ввод слов( более того даже не ожидается ввод проверочного символа, а в файл пишется одна строка и все). Подскажите пожалуйста в чем тут может быть ошибка.
И еще если подкинете идею как реализовать проверщик(должен из файла случайно выдавать английское слово, в ответ получать русское слово и если это слово совпадет с одним из двух значений выдавать типо "верно" и снова англ слово), то будет просто прекрасно.

Заметьте я прошу помощи, подсказки, толчка в нужном направлении но не готового кода. Хочу сам написать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2010, 15:49     Словарик/Тестер
Посмотрите здесь:

Словарик :)
Мини-интернет словарик
написать словарик C++
Женско - мужской словарик.
Словарик C++ Builder
Словарик на C# C#
VBA У кого-нибудь есть словарик VBA функций?
тестер Delphi БД
Python Простой словарик
Тестер Delphi
Случайное значение (словарик) MS Excel
C++ Тестер

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
29.07.2010, 16:35     Словарик/Тестер #2
Цитата Сообщение от alexyoung Посмотреть сообщение
Проблема в следующем: не производится повторный ввод слов( более того даже не ожидается ввод проверочного символа, а в файл пишется одна строка и все). Подскажите пожалуйста в чем тут может быть ошибка.
Цитата Сообщение от alexyoung Посмотреть сообщение
scanf( "%s", New.TransTwo );
Цитата Сообщение от alexyoung Посмотреть сообщение
scanf( "%c", &c );
C
1
2
3
scanf("%s%*c", New.TransTwo );
...
scanf("%c%*c", &c);
Добавлено через 5 минут
Цитата Сообщение от alexyoung Посмотреть сообщение
И еще если подкинете идею как реализовать проверщик(должен из файла случайно выдавать английское слово, в ответ получать русское слово и если это слово совпадет с одним из двух значений выдавать типо "верно" и снова англ слово), то будет просто прекрасно.
из массива структур случайным образом брать любую, выводить из неё английское слово, читать в буфер ответ, сравнивать с первым русским из структуры, если не совпадёт - сравнивать со вторым...

Кстати, странный у Вас какой-то С...
alexyoung
0 / 0 / 0
Регистрация: 25.06.2010
Сообщений: 6
29.07.2010, 17:09  [ТС]     Словарик/Тестер #3
Прекрасно,все работает. Вот только хотелось бы узнать: что именно делает ваше добавление в форматной строке, если вам не сложно пояснить, разумеется.
П.с. среда разработки KDevelop под KDE.Может поэтому немого отличается...
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
29.07.2010, 17:13     Словарик/Тестер #4
alexyoung, Ну как бэ...

C++
1
2
3
#include <iostream>
#include <cstdlib>
using namespace std;
- это C++.

Для C

C
1
2
#include <stdio.h>
#include <stdlib.h>
Быть могут проблемы с хидерами, если будете писать в CPP файле, тогда

C++
1
2
#include <cstdio>
#include <cstdlib>
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
29.07.2010, 17:20     Словарик/Тестер #5
Цитата Сообщение от alexyoung Посмотреть сообщение
Прекрасно,все работает. Вот только хотелось бы узнать: что именно делает ваше добавление в форматной строке, если вам не сложно пояснить, разумеется.
П.с. среда разработки KDevelop под KDE.Может поэтому немого отличается...
Среда разработки тут не при чём абсолютно. Прочитайте внимательнее руководство к scanf:
Код
man 3 scanf
в консоли... Спецификатор %*c пропускает символ, следующий за только-что прочитанным. Проще говоря '\n' проглатывает.
Yandex
Объявления
29.07.2010, 17:20     Словарик/Тестер
Ответ Создать тему
Опции темы

Текущее время: 12:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru