Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Александр321321
48 / 14 / 16
Регистрация: 11.11.2014
Сообщений: 397
1

Вводится лишнее число

30.01.2015, 11:06. Просмотров 1049. Ответов 7
Метки нет (Все метки)

Проблема в том, что в этом коде, после ввода числа n надо вводить ещё какое-о число, откуда это число я не знаю. В конце это число является первым элементом массива A. Если в этой строчке scanf("%i", &n); после %i поставить \n или \t, то лишнее число вводится между первым и вторым элементом массива. Как это исправить? Вроде раньше тоже самое делал и всё нормально было. Хотя может что-то перепутал. Пишу в embarcadero.

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
#pragma hdrstop
#pragma argsused
 
#include <tchar.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <math.h>
 
int _tmain(int argc, _TCHAR* argv[])
{  SetConsoleOutputCP(1251);
   SetConsoleCP(1251);
   int n,i;
   float *A;
    printf ("Сколько чисел\n");
    scanf("%i", &n);
   A = new float [n];
   printf ("Введите свои числа\n");
   for (i = 0; i < n; i++) {
   printf ("A[%i]\t", i+1);
   scanf("%f\n", &A[i]);
   }
   for (i = 0; i < n; i++) {
         printf ("%f\t", A[i]);
   }
 
 
 
 
 
 
 
    getch();
    return 0;
}
Добавлено через 15 часов 14 минут
Никто не ответил попробую по-понятнее описать проблему. В консоле я вижу следующее.
Введите количество чисел: например 5.
Но тут надо ввести ещё какое-то число, чтобы пойти дальше. Ну например 3.
Дальше вожу элементы массива : 9 8 7 6 5.
Дальше должен получить элементы массива на экране, но мне выдаёт следующее. 3 9 8 7 6.
Т.е это число на что-то влияет. В чём проблема? Такое же происходит не только с этим кодом.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2015, 11:06
Ответы с готовыми решениями:

ЦИКЛ вводится любое число, программа должна выдать данное число наоборот
например 12345, выдать 54321. Как сделать цикл? чтобы он сначала выделил 5,...

Вводится число N, из его цифр сформировать максимальное число
Суть в чем: вводится целое число, например 53941, используя эти цифры, надо...

Вводится число, из него составляем два..
Доброго времени суток, господа программисты! Начинаю потихоньку разбираться в...

Как узнать, что вводится в программу: число или буква?
Доброй ночи. Изучил все топики с подобным вопросом, но к однозначному и...

Вводится значение сантиметров. Найти и вывести число полных метров
Составить программу, в которой вводится значение сантиметров. Найти и вывести...

7
Boleon
Guardian of Asgaard
373 / 316 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
Завершенные тесты: 1
30.01.2015, 11:21 2
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
#include <stdio.h>
 
int main() {
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int n, i;
    float* a;
    
    printf("Сколько чисел\n");
    scanf("%d", &n);
    
    a = (float*) malloc(n * sizeof(int));
    
    printf ("Введите свои числа\n");
    for ( i = 0; i < n; i++ ) {
        printf ("a[%d]\n", i+1);
        scanf("%f", &a[i]);
    }
    
    for (i = 0; i < n; i++) {
        printf("%g\n", a[i]);
    }
    free(a);
 
    getch();
 
    return 0;
}
0
Александр321321
48 / 14 / 16
Регистрация: 11.11.2014
Сообщений: 397
30.01.2015, 11:33  [ТС] 3
Спасибо. Но мне хотелось бы узнать в чём у меня проблема. Мне надо чтобы я понимал, а не просто скопировал и сидел).
0
Boleon
Guardian of Asgaard
373 / 316 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
Завершенные тесты: 1
30.01.2015, 11:39 4
Лучший ответ Сообщение было отмечено Александр321321 как решение

Решение

Либо в этом: A = new float [n];
Либо в этом: scanf("%f\n", &A[i]); знак '\n' настораживает

Добавлено через 2 минуты
Попробуй изменить 21 строку на scanf("%f", &A[i]); если все равно неверно будет, значит проблема точно в 17 строке
0
Александр321321
48 / 14 / 16
Регистрация: 11.11.2014
Сообщений: 397
30.01.2015, 11:45  [ТС] 5
\n-перенос на новую строку. Если его убрать, ничего не изменяется. А насчёт A=new float [n]. Нас так учили я и ранше вроде так писал, хотя уже почти 2 месяца прошло как ничего не делал)

Добавлено через 2 минуты
Спасибо большое. Дело действительно в \n было. Осталось понять как это повлияло). Но это уже попроще будет) Спасибо.
0
Kerry_Jr
Эксперт PHP
2211 / 2007 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
30.01.2015, 11:47 6
Цитата Сообщение от Boleon Посмотреть сообщение
a = (float*) malloc(n * sizeof(int));
а вы ничего не перепутали? Конечно памяти выделится нужное количество байт, но как-то некрасиво.

Добавлено через 36 секунд
Цитата Сообщение от Александр321321 Посмотреть сообщение
A=new float [n]
Это не C, а С++.
1
Александр321321
48 / 14 / 16
Регистрация: 11.11.2014
Сообщений: 397
30.01.2015, 11:49  [ТС] 7
Нас так препод учил. Хотя он всё время не понятно объясняет. Но главное работает, так что пока что мне это не мешает) Просто как по-другому можно массив задать я не знаю(точнее количество чисел самому указывать).
0
Boleon
30.01.2015, 12:06     Вводится лишнее число
  #8

Не по теме:

Цитата Сообщение от Kerry_Jr Посмотреть сообщение
а вы ничего не перепутали? Конечно памяти выделится нужное количество байт, но как-то некрасиво.
оу, точно)

0
30.01.2015, 12:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2015, 12:06
Привет! Вот еще темы с ответами:

Вводится массив и число Х, надо вывести из массива все числа чя сумма равна Х
помогите решить задачу пожалуйста, есть массив из Н элементов и число Х, надо...

Составить алгоритм определяющий, есть ли среди цифр введенного числа — одинаковые. Число вводится с клавиатуры
Составить алгоритм определяющий, есть ли среди цифр введенного числа —...

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


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

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

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