Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
George-
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 13
1

Программа выдает неправильный результат

14.11.2013, 20:49. Просмотров 1029. Ответов 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
#include <stdio.h>
 
int main(void){
    char mas[10];
    scanf("%s", mas);
    for(int i = 0; i < 10; i++){
        switch(mas[i]){
            case '0':
                printf("Ziro\n");
                break;
            case '1':
                printf("One\n");
                break;
            case '2':
                printf("Two\n");
                break;
            case '3':
                printf("Three\n");
                break;
            case '4':
                printf("Four\n");
                break;
            case '5':
                printf("Five\n");
                break;
            case '6':
                printf("Six\n");
                break;
            case '7':
                printf("Seven\n");
                break;
            case '8':
                printf("Eight\n");
                break;
            case '9':
                printf("Nine\n");
                break;
        }
    }
return 0;
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2013, 20:49
Ответы с готовыми решениями:

Программа выдает неправильный результат
#include &lt;stdio.h&gt; #define a 20 #define n 20 int main () { int i,k; int arr,m; i=0;...

Программа выдает неправильный результат
# include &lt;string.h&gt; # include &lt;stdio.h&gt; # include&lt;conio.h&gt; char a1=&quot;asddfghjk&quot;;char a2;int...

Почему программа выдаёт неправильный результат?
#include &lt;stdio.h&gt; int main() { float average; int counter, grade, total; // этап...

Программа не выдает результат
Результат не выдает. #include &quot;stdafx.h&quot; int _tmain(int argc, _TCHAR* argv) {

Программа не выдает результат
не понимаю, почему нет результата? задание: Y= 3(А-х), если А-нечетное, А больше х =А/х, если...

4
George-
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 13
14.11.2013, 20:54  [ТС] 2
Результаты:

Программа выдает неправильный результат


Название: kbbdI8hIUEC8sYGnVs46Cw.png
Просмотров: 55

Размер: 834 байт
0
Dizark
25 / 25 / 16
Регистрация: 12.04.2013
Сообщений: 72
14.11.2013, 22:37 3
Сделай цикл
C
1
for(int i = 0; i < strlen (str); i++){
Ошибка в том, что ты пытаешься выводить числа всех десяти элементов массива, хотя заданы у тебя только три (в первом примере).
0
George-
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 13
15.11.2013, 00:00  [ТС] 4
Dizark, спасибо, все получилось, но я же проверяю перед вводом, почему выводит...
0
Dizark
25 / 25 / 16
Регистрация: 12.04.2013
Сообщений: 72
15.11.2013, 03:02 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Ммм... Что проверяешь перед вводом?
Тут суть в чем (пойдем разбирать по строкам)

char mas[10];
Выделили область памяти в 10 байт, создав указатель на начало с именем mas
Вот что у нас счас в памяти после этой строчки:
mas: X X X X X X X X X X
X - это фиг его знает что, любое число, мусор. В общем неизвестно что

scanf("%s", mas);
Запросили с клавиатуры строку. Возьмем ее из твоего-же примера
mas = "123"
mas: 0x31 0x32 0x32 0x00 X X X X X X
Первые три байта - это коды символов 1, 2 и 3. Следующий 0 - это окончание текстовой строки (именно натыкаясь на первый 0 функции типа strstr, strchr да и тот-же printf c типом переменной %s, считают, что строка окончена. А если этого нуля не будет - то будет весьма весело и скорей всего программа вылетит с ошибкой типа "ошибка сегментации памяти"....)

for(int i = 0; i < 10; i++){.....
И вот тут ты десять раз подряд вызываешь свою обработку.. И вот что у тебя получается:
i = 0, mas[0] = 0x31 = '1'. Получаем вывод "One"
i = 1, mas[1] = 0x32 = '2'. -- "Two"
i = 2, mas[2] = 0x33 = '3'. -- "Three"
i = 3, mas[3] = 0x00. В данной свитч структуре нет соответствующего кейса, ровно как нет и дефолтного кейса. Поэтому ничего не выводится.
i = 4 и далее, mas[4...9] = X Ну и тут уже возможно следующее - либо значение этих байтов лежат вне диапазона 0x30 - 0x39 (символы 0 - 9) и тогда ничего не выводится, либо они попадают в этот диапазон и соответственно отображаются лишние цифры


А изменив длину цикла на i < strlen (mas) мы обрабатываем именно столько байт, сколько мы ввели символов.
1
15.11.2013, 03:02
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2013, 03:02

Программа выдает результат 0,00000
Граждане, всем доброго времени суток! не пойму, где я не так делаю, почему результат 0,00000???...

Программа выдает неверный результат
Имеем вот такую программу: #include &lt;conio.h&gt; #include &lt;stdio.h&gt; float x={10.0, 20.0, 30.0, 40.0,...

Программа выдает не правильный результат
Задание: Задана прямоугольная матрица размером N x M вещественных 8-ми байтовых чисел и вектор B(M)...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.