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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Me11eR
 Аватар для Me11eR
10 / 10 / 0
Регистрация: 08.07.2009
Сообщений: 34
#1

создание таблицы умножения, error - C++

22.07.2009, 00:10. Просмотров 1433. Ответов 6
Метки нет (Все метки)

Здравствуйте дорогие обитатели форума, собственно я здесь новенький и отношусь так сказать к разряду "хеллоувёрлдщиков"... ну это так, а так о чем я:
Собственно вот код

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
45
46
47
48
49
50
51
52
53
54
55
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
void tablexy(int, int); //ïðîòîòèï
int main(int argc, char *argv[])
{
    int x, y;           //îáüÿâëÿåì ïåðåìåГ*Г*ûå
    x = (int) argv[1];  //ГЁ Г±ГІГ*ГўГЁГ¬ ГЁГ¬ Г§Г*Г*Г·ГҐГ*ГЁГї
    y = (int) argv[2];  //ïåðåäГ*ГўГ*åìûå ÷åðåç êîìГ*Г*Г¤Г*ГіГѕ ñòðîêó
    tablexy(x, y);
    system("PAUSE");
    return EXIT_SUCCESS;
}
void tablexy(int x, int y)
{
     //-----------------------------------
     //ГЏГҐГІГ·Г*ГІГ*ГҐГ¬ ñòðîêó ГўГЁГ¤Г* "  |  1  2  3 ... (x-1)  x"  
     cout << setw(3) << "|";
     
     for(int c = 1; c <= x; c++)
     {
             cout << setw(3) << c;
     }
     cout << endl;
     //-----------------------------------
     
     //ГЇГҐГІГ·Г*ГІГ*ГҐГ¬ ñòðîêó ГІГЁГЇГ* "---" Г°Г*ГўГ*ГіГѕ ГЇГ® äëèГ*Г*ГҐ âåðõГ*ГҐГ© ñòðîêå
     for(int c = 1; c <= x; c++)
     { 
             cout << "---";
     }
     cout << endl;
     //-----------------------------------
     
     //öèêë ГЇГҐГ·Г*ГІГЁ ñòðîê ГІГЁГЇГ* "y  |  y*1  y*2 ... y*x"
     for(int cy = 1; cy <= y; cy++)
     {
             
             
     
     cout << setw(2) << cy << ' ' << "| ";
                     
     for(int cx = 1; cx <= x; cx++)
     {
           cout << cy*cx << "  ";
     }
     
     cout << endl;
            
             
    
     }
 
}
Собственно с точки зрения компилятора сдесь все впорядке, но при выполнении чтото вызывает бесконечный цикл и программа выводит мусор. Прозьба хотябы намеком сказать что тут неапорядке.
Собственно код по идее должен выводить таблицу типа
Код
 |   1  2  3  ... х
-----------------
1|  1  2  3 ... 1*x
2|  2  4  6 ... 2*y
...
y|  ........... y*x
итд
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2009, 00:10     создание таблицы умножения, error
Посмотрите здесь:

Заполнить двумерный масив результатами таблицы умножения C++
Таблица умножения в виде таблицы C++
Программа проверки знания таблицы умножения C++
C++ Программа должна выводить аналог целочисленной таблицы умножения для дробей
Вывод таблицы умножения C++
C++ Раскраска таблицы умножения
C++ Написать функцию выводящую на экран указанную часть таблицы умножения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.07.2009, 00:44     создание таблицы умножения, error #2
C++
1
x = (int) argv[1];  //и ставим им значения
заменить на

C++
1
x= atoi( argv[1] );
Добавлено через 1 минуту 6 секунд
И вообще пиши правильно - проверь сначала что у тебя в argv есть два аргумента, а то если ни одного параметра не подать, то все рухнет.
Me11eR
 Аватар для Me11eR
10 / 10 / 0
Регистрация: 08.07.2009
Сообщений: 34
22.07.2009, 00:59  [ТС]     создание таблицы умножения, error #3
Думаю для проверки такие строки пойдут
C++
1
2
3
4
5
6
7
if(((atoi( argv[1] )) >= 1 && (atoi( argv[1] )) <= 50) && ((atoi( argv[2] )) >=1 && (atoi( argv[2] )) <=50))
    {
       x = atoi( argv[1] );  //ГЁ Г±ГІГ*ГўГЁГ¬ ГЁГ¬ Г§Г*Г*Г·ГҐГ*ГЁГї
       y = atoi( argv[2] );  //ïåðåäГ*ГўГ*åìûå ÷åðåç êîìГ*Г*Г¤Г*ГіГѕ ñòðîêó
       tablexy(x, y);
    }
    else cout << "error";
адд, читабельность только упала...
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.07.2009, 01:02     создание таблицы умножения, error #4
Жесть.
Я имел в виду, что нужно проверить argc тоже.

C++
1
2
3
4
5
6
7
8
9
10
11
argc--;
argv++;
if ( argc<2 ) { cerr <<"No arguments\n"; exit( 2 ); }
x= atoi( argv[0] );
y= atoi( argv[1] );
if ( 1<=x && x<=50 && 1<=y && y<=50 ) {
    cout <<"Do something ...";
} else {
   cerr <<"Invalid arguments\n";
   exit( 2 );
}
Me11eR
 Аватар для Me11eR
10 / 10 / 0
Регистрация: 08.07.2009
Сообщений: 34
22.07.2009, 01:09  [ТС]     создание таблицы умножения, error #5
Ну а че, добавить в мою строку && (argv == 2) и в эльсе печатать хелп по проге. новичкам пойдет.
а в твоем коде используется exit. который, как я догадываюсь завершает прогу. ну собственно опытв у меня мало, могу чтото недогонять. такчто все равно спасибо
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.07.2009, 01:11     создание таблицы умножения, error #6
Так как делаешь ты не стоит делать.
Зачем дергать много раз функцию atoi() ?
Проще получить значения x,y и потом их проверять.
Да и код будет читабельнее.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2009, 01:12     создание таблицы умножения, error
Еще ссылки по теме:

C++ Выввод таблицы умножения
C++ Написать программу для вывода таблицы умножения на экран
Программа для изучения таблицы умножения C++
Задать пользователю вопросы на знание таблицы умножения, по результатам поставить оценку C++
Проверка знаний таблицы умножения C++

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

Или воспользуйтесь поиском по форуму:
Me11eR
 Аватар для Me11eR
10 / 10 / 0
Регистрация: 08.07.2009
Сообщений: 34
22.07.2009, 01:12  [ТС]     создание таблицы умножения, error #7
кстати тоже значюющий факт, производительность + читабельность. И еще раз спасибо)
Yandex
Объявления
22.07.2009, 01:12     создание таблицы умножения, error
Ответ Создать тему
Опции темы

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