Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.77/48: Рейтинг темы: голосов - 48, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 23.07.2012
Сообщений: 19
1

hello world 10 раз

23.07.2012, 17:09. Просмотров 10068. Ответов 65
Метки нет (Все метки)

нужен вывести hello world 10 раз через for и while.как это сделать я не знаю.
printf 10 раз не подходит
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2012, 17:09
Ответы с готовыми решениями:

Нужно вывести на экран “Hello world” N раз
Нужно вывести на экран “Hello world” N раз. Input Со стандартного устройства ввода вводится 1...

Напечатать слово world n раз
привет ребят) нужна очень помощь)) если не трудно напишите решение задач вот этих: 1) Напечатать...

Вывод Hello World в цикле 10 раз
Задача: Модифицировать текст программы так, чтобы надпись выводилась на экран 10 раз. Указание: для...

Вывод "Hello, world!" заданое количество раз, с новой строки
Доброго времени суток. Помогите написать програму на асме,сам впервые стыкаюсь с ним.. Сама...

65
Модератор
Эксперт Python
26648 / 13896 / 2642
Регистрация: 12.02.2012
Сообщений: 22,781
Записей в блоге: 1
24.07.2012, 19:39 41
Цитата Сообщение от kravam Посмотреть сообщение
А ещё можно использовать ассемблерные вставки
- да, и мне это приходило в голову...
0
606 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,069
24.07.2012, 19:41 42
Цитата Сообщение от Catstail Посмотреть сообщение
и мне это приходило в голову...
не только вам
0
Kastaneda
24.07.2012, 19:59
  #43

Не по теме:

Цитата Сообщение от Fatal Error Посмотреть сообщение
не только вам:)
Ага :)

0
Endiff
24.07.2012, 20:00
  #44

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение

Не по теме:


Ага :)

В точку.

0
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
24.07.2012, 20:03 45
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
#include <iostream>
 
template<char, char...>
struct print;
 
template<>
struct print<'0'>
{
   static void apply()
   {
      std::cout << std::endl;
   }
};
 
template<char current, char... chars>
struct print
{
   static void apply()
   {
      std::cout << current;
      print<chars...>::apply();
   }
};
 
template<int begin, int end>
struct hello_printer
{
   static void apply()
   {
      print<'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!', '0'>::apply();
      hello_printer<begin + 1, end>::apply();
   }
};
 
template<int end>
struct hello_printer<end, end>
{
   static void apply()
   {
   }
};
 
int main()
{
   hello_printer<0, 10>::apply();
}
http://liveworkspace.org/code/... 478900d6c6
0
Endiff
24.07.2012, 20:04
  #46

Не по теме:

Даешь ассемблер...

0
1992 / 1592 / 488
Регистрация: 31.05.2009
Сообщений: 2,980
24.07.2012, 20:11 47
C++
1
2
3
4
5
6
7
8
#include <cstdio>
 
struct hello_world { hello_world() { puts("Hello, world!"); } } _[10];
 
int main()
{
    
}
2
Мой лучший друг-отладчик!
165 / 165 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
24.07.2012, 20:12 48
Вот ещё вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main()
{
    int i;
    for(i=0;i<10;i++)
    {
        goto hello;
ret : goto world;
        ret2 :;
    }
    if(i<10)
    {
hello : cout<<"Hello ";
    goto ret;
world : cout<<"world"<<endl;
    goto ret2;
    }
    system("pause");
}
0
Модератор
Эксперт Python
26648 / 13896 / 2642
Регистрация: 12.02.2012
Сообщений: 22,781
Записей в блоге: 1
24.07.2012, 20:14 49
Мне кажется, более правильно было бы так:

C++
1
2
3
4
5
6
7
char msg[] = "Hello, world";
 
asm {
    lea dx, msg
    mov ah,9
    int 0x21 
}
В DOS-овском варианте работать будет...
0
Мой лучший друг-отладчик!
165 / 165 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
24.07.2012, 20:18 50
Может ещё кинуть способ с использованием шифрования по Виженеру?)))
0
137 / 126 / 14
Регистрация: 03.07.2012
Сообщений: 355
24.07.2012, 20:19 51
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main()
{
    const char str[] = "Khoor/#zruog$";
 
    for (int i=0; i<strlen(str); i++)
        cout << char(str[i] - 3);
 
    cout << endl;
    system("pause");
    return 0;
}
0
Endiff
24.07.2012, 20:19
  #52

Не по теме:

Catstail, вам виднее :D

0
Модератор
Эксперт Python
26648 / 13896 / 2642
Регистрация: 12.02.2012
Сообщений: 22,781
Записей в блоге: 1
24.07.2012, 20:51 53
Если уж совсем точно, то в DOS-е вот ЭТО работает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
   char msg[]="Hello!!!$";
 
   asm    push ss
   asm    pop  ds
   asm    lea dx,msg
   asm    mov ah,9
   asm    int 0x21
 
   return 0;
}
0
Модератор
Эксперт по электронике
8229 / 6096 / 814
Регистрация: 14.02.2011
Сообщений: 21,172
24.07.2012, 20:55 54
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
char msg[] = "Hello, world";
int main()
{ 
asm_ {
       mov ecx,10;
       lea edx,msg;
met1: push ecx;
         push edx;
         call printf;
        pop eax; // восстановить стек
        pop ecx;
        loop met1; 
 }
}
Dll будем делать??
1
606 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,069
24.07.2012, 21:28 55
Цитата Сообщение от ValeryS Посмотреть сообщение
pop eax; // восстановить стек
вы кладете в стек edx, а достаете eax... непорядок

Добавлено через 1 минуту
Catstail, я думаю надо все таки переписать под ВрайтКонсольА...
0
Модератор
Эксперт Python
26648 / 13896 / 2642
Регистрация: 12.02.2012
Сообщений: 22,781
Записей в блоге: 1
24.07.2012, 21:31 56
Надо бы...
0
быдлокодер
1718 / 905 / 106
Регистрация: 04.06.2008
Сообщений: 5,612
24.07.2012, 21:38 57
Ассемблерная вставка:
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
#include <windows.h>
#include <stdio.h>
 
int main() {
   //НАйдём адрес нужной нам функции puts
   long int adres_puts= (long int)GetProcAddress (LoadLibrary ("msvcrt"), "puts");
 
 
   //Теперь цикл
   for (int i= 0; i< 10; i++) {
 
 
    //Здесь мы с помощью ассемблерной вставки кладём на вершину стека
    //Адрес "Hello, word" и прыгаем на адрес adres_puts, осуществляя 
    //тем самым вызов puts c нужным параметром
    asm ("push %0; \
          call %1; \
          ADD ESP, 4"
          :
          :"r"("Hello, word!"), "r" (adres_puts)
          :);
   
   }
   
   //ВЫравнивание стека я осуществил по-сермяжному с помощью "ADD ESP, 4"
   //Хотя правильно быо бы RETN ну да и так сойдёт
    getchar ();
    return 0;
 
}
компилить
Bash
1
g++ main.cpp -masm=intel
А можно было бы вообще стек не выравнивать, всё равно программа закончилась
0
Модератор
Эксперт по электронике
8229 / 6096 / 814
Регистрация: 14.02.2011
Сообщений: 21,172
24.07.2012, 22:13 58
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Fatal Error Посмотреть сообщение
вы кладете в стек edx, а достаете eax... непорядок
вот этим
Цитата Сообщение от ValeryS Посмотреть сообщение
push edx;
call printf;
я передаю аргумент функции printf
аналогично printf("Hello word)
можно написать
Assembler
1
2
push msg;
call printf;
а вот этим
Цитата Сообщение от ValeryS Посмотреть сообщение
pop eax; // восстановить стек
я выравниваю стек,поскольку printf Сишная а не паскалевская функция, стек должна править вызывающяя функция, в паскалевских вызываемая.
можно сделать в любой неиспользуемый регистр
а можно и так
Assembler
1
 ADD ESP, 4
что в принципе приведет к одному результату -указатель стека сдвинется
Понятно объяснил?

Добавлено через 3 минуты
Цитата Сообщение от kravam Посмотреть сообщение
А можно было бы вообще стек не выравнивать, всё равно программа закончилась
а в цикле потом i найдешь?? указатель то сдвинулся

Добавлено через 7 минут

Не по теме:

Цитата Сообщение от Fatal Error Посмотреть сообщение
Catstail, я думаю надо все таки переписать под ВрайтКонсольА...
Цитата Сообщение от Catstail Посмотреть сообщение
Надо бы...
Представляю
придет наш ТС к своему преподавателю да и выложит все наши наработки:)
Тот посмотрит и скажет: "Что ты здесь делаешь? Дуй в академию наук"

3
быдлокодер
1718 / 905 / 106
Регистрация: 04.06.2008
Сообщений: 5,612
24.07.2012, 22:22 59
Цитата Сообщение от ValeryS Посмотреть сообщение
а в цикле потом i найдешь?? указатель то сдвинулся
проверено, находится корректно, хз к чему там i привязывается.
0
Фрилансер
Эксперт С++
5842 / 1223 / 499
Регистрация: 23.11.2010
Сообщений: 3,377
Записей в блоге: 1
24.07.2012, 22:25 60
Совсем для наркоманов
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <boost/mpl/vector_c.hpp>
#include <boost/mpl/for_each.hpp>
#include <boost/lambda/lambda.hpp>
 
int main()
{
   for(int i = 10;; i ? boost::mpl::for_each <boost::mpl::vector_c <char, 'H','e','l','l','o',',', ' ','W','o','r','l','d'>> (std::cout<<boost::lambda::_1), std::cout<<std::endl, i-- : 0);
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2012, 22:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Рекурсия: вывод "Hello, World!" N раз
Напишите, пожалуйста, код, который выводит &quot;Hello, World!&quot; N раз. Не могу понять, как пользоваться...

Поменять слова местами то есть Hello World > World Hello C++
Ребят всем привет помогите решить задачку: Имеется предварительно созданный текстовый файл,...

Переменной А присвоить ее значение, увеличенное в N раз, 2N раз, 3N раз
Переменной А присвоить ее значение, увеличенное в N раз, 2N раз, 3N раз

Найти вероятность того, что герб выпадет: 2 раза; не менее 2 раз; не более 2 раз; не менее одного и не более трех раз
Монету бросают 6 раз. Найти вероятность того, что герб выпадет: а) 2 раза; б) не менее 2 раз; в)не...

Команды в цикле выполняются на один раз больше положенного числа раз
Есть следующий скрипт: rem Данный батник производит преобразование имен телефонный аудиозаписей...

Найти вероятность того, что событие появиться 90 раз и более 90 раз.
вероятность появления событий в каждом из 100 независимых испытаний постоянна и ровна. найти...


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

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

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