Форум программистов, компьютерный форум, киберфорум
Наши страницы

Проверьте решение новичка:) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перекласть пирамиду http://www.cyberforum.ru/cpp-beginners/thread224479.html
Надо перекласть пирамиду, которая выложена из десяти карточек так, чтобы форма ее не изменилась, но каждая карточка дотрагивалася только до новых карточек.
C++ Найти проекцию точки на прямую (С++) Скоро курсач сдавать, в одном задании не успеваю разобраться как делать. Задание такое: Создать заголовочный файл, содержащий определения структур, описывающих следующие геометрические объекты: 1.)... http://www.cyberforum.ru/cpp-beginners/thread224478.html
C++ Парни помгите найти ошибку
В файле даны коофициенты попарно различных прямых, найти из них ту(прямую), которая пересекается с другими больше всего раз. я написал прогу но она не работает помогите пожайлуста #include...
C++ Какой компилятор выбрать для лучшего изучения С++ по книге Берна Страуструпа?п
Какой компилятор выбрать для лучшего изучения С++ по книге Берна Страуструпа? Возможно вопрос туповатый, но мне хотелось бы что-то попроще, но и что бы за книгой успевал). Ну может кто проходил по...
C++ Как вычислить значение функции используя разложение cos в ряд Тейлора??? http://www.cyberforum.ru/cpp-beginners/thread224460.html
Вычислить значение функции y, разложив cos(x) в ряд Тейлора. Аргумент х изменяется от -2 до 2 с шагом 0,5. Определить погрешность. y=cos(x/2)/cos(x^2), x є y=cos^2(x/2)*(cos2x), x > 0
C++ Массив указателей не могу понять ошибку Массив указателей не могу понять ошибку почему нельзя так присвоить значение:c->data=d;?Объясните пожалуйста! Вот сам код программы: struct node { int data; }; void main () { int d=5,i=0; подробнее

Показать сообщение отдельно
Escapable
54 / 54 / 1
Регистрация: 09.11.2010
Сообщений: 120
05.01.2011, 21:39
Rusl_v, это происходит из-за того, что объявленная переменная "x" не имеет размера, т.е. отсутствуют квадратные скобки после "x"
C++
1
char x[10];
И из-за этого, если с клавиатуры введено более одного знака, компилятор считает каждый знак в отдельности. Если например программу переписать вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    char x[10];
    int y = 0;
 
    do {
        cout<<"Type a num:";
        cin>>x;
        if (x == '.') y++;
    } while (x!='$');
 
    cout<<"Sign '.' was typed = "<<y<< " times." << "\n";
 
return 0;
}
то она работать вовсе не будет. А если так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
        char x[10];
        int y = 0;
 
        do {
                cout<<"Type a num:";
                cin>>x;
                if (x == ".") y++; //  заметь, что вместо одинарных ковычек(' '), 
        } while (x!="$");          // прописаны двойные(" ")
 
        cout<<"Sign '.' was typed = "<<y<< " times." << "\n";
 
return 0;
}
то она войдет в бесконечный цикл "ввода" но при этом, если вводить больше одного знака, она не будет отображать строку "Type a num: ".

Так что первый вариант, в данном случае, самый подходящий.

Мой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main()
{
    char x[10], wrong[] = "$", right[] = ".";
    int i = 0;
    
    do {
        cout << "Type a num: ";
        cin >> x;
        if(!strcmp(right, x)) i++;
 
    } while (strcmp(wrong, x));
 
    cout << "Sign '.' was typed " << i  << " times." << endl;
    
return 0;
}
PS Сам новичек, если я где-то не прав, прошу поправить.
PSS И да, у вас подключено слишком много ненужных библиотек.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.