Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2008, 21:12   #1
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию Visual C++: Что не так делаю?

Изучаю C++, вот вопрос возник, консольное приложение, задача: с клавиатуры вводится 20 чисел, после они выводятся на экран.
Код:
// FirstConsoleApplication.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "conio.h"
#include "stdio.h"


int _tmain(int argc, _TCHAR* argv[])
{ int fa [20];//массив чисел
  int i;//счётчик
  for (i=0; i<=20; i++) {
  fa[i]=getchar();//20 раз спрашиваем числа, хотя на деле не более 12..
  }
  for (i=0; i<=20; i++) {
  printf("%d\n", fa[i]);//выводим на экран
  }
  _getch();
}
Только вот когда выводятся там другие числа, которые даже не вводились... Что я не так делаю?
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 17.05.2008, 21:25   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Какие другии? Сколько вводишь и сколько он выдаёт?
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 17.05.2008, 21:36   #3
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

Вот скрин, ввожу 10 цифр, далее пишет:
49
10
50
10
50
10
51
10
52
.... и т. д.
Изображения
Тип файла: jpg с++.jpg (9.8 Кб, 153 просмотров)
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 17.05.2008, 23:09   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

А не пробовали вместо
Код:
fa[i]=getchar();
писать
Код:
scanf("%c", fa[i]);
Так я думаю будет лучше.
MaTBeu вне форума Ответить с цитированием
Старый 17.05.2008, 23:12   #5
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

И еще, лучше при создании консольного проекта выбирайте Win32 Console Application, а в окне параметров (сразу после выбора шаблона проекта), ставьте галочку напротив Empty project. Так много непонятного кода отсекается.
Это если в студии 2005.
MaTBeu вне форума Ответить с цитированием
Старый 17.05.2008, 23:55   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
Код:
scanf("%c", fa[i]);
Поправлю. scanf ждёт адрес переменной, а не её значение!

Код:
#include <stdio.h>

#define N 5

int main()
{
	int i, test[N];
	
	for(i = 0; i < N; i ++)
	{
		printf("test[%d] : ", i); 
		scanf("%d", &test[i]); // <-- обязательно АДРЕС элемента массива ( оператор & )
	}

	puts("----------");

	for(i = 0; i < N; i ++)
	{
		printf("test[%d]=%d\n", i, test[i]);
	}

	fflush(stdin);
	getchar();
	return 0;
}
B_N вне форума Ответить с цитированием
Старый 18.05.2008, 00:10   #7
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Извините. Амперсант пропустил.
Но, я Вас тоже поправлю Нужно вводить char, а не integer. Так что %d изменяем на %c.

Последний раз редактировалось MaTBeu; 18.05.2008 в 00:12.
MaTBeu вне форума Ответить с цитированием
Старый 19.05.2008, 09:47   #8
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

Спасибо всё работает,
Цитата:
Извините. Амперсант пропустил.
Но, я Вас тоже поправлю Нужно вводить char, а не integer. Так что %d изменяем на %c.
Ничего не менял в коде B_N и нормально работает.
ещё вопросик: как переводить string в int или float и обратно?
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 19.05.2008, 11:28   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
Но, я Вас тоже поправлю Нужно вводить char, а не integer. Так что %d изменяем на %c.
А вот и зря! Нигде в условии не сказано про ввод символов, массив "fa [20]" N!ckeL объявил как целочисленный, так что зачем здесь "%c" - вопрос. Ну это, конечно, если не углубляться в то, что char - это тоже целочисленный тип....
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
правильно ли я делаю? andrey4623 Общие вопросы Delphi 2 07.03.2008 20:14
Делаю Кроссворды Иллидан Фриланс 3 03.02.2008 21:50
делаю автопостер Филлип Помощь студентам 4 06.11.2007 16:11
ПЛИЗ ХЕЛП МИ делаю фотогалерею VOLKOV PHP 1 20.09.2007 16:28