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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2009, 20:40   #1
stomp
 
Регистрация: 01.05.2009
Сообщений: 3
По умолчанию Простая задачка

Здравствуйте. Есть вот такая задачка:
Написать программу на С пораждающая в цикле следующюю таблицу значений:
A A+2 A+4 A+6
3 5 7 9
6 8 10 12
9 11 13 15
12 14 16 18
15 17 19 21
Конечно ж это можно написать так:


Код:
#include <stdio.h>

main()
    {
         int a=3,i=1;
         printf("A\tA+2\tA+4\tA+6\n");
         while (i++ <= 5) {
                 printf("%d\t%d\t%d\t%d\n", a,a+2,a+4,a+6);
                 a=a+3;
                
         }
printf("\n");
return 0;
}


но а если может случиться что A+n, тогда как?
Попытался написать вот так:


Код:
#include <stdio.h>
main ()
    {
         int a=3,i=1,k=0,s=1,p,f=0;

printf("A\tA+2\tA+4\tA+6\n");

while ( i++ <=5){
  a=f+3;
         while (s++ <=4) {
                  p = a+k;
                  printf("%d\t",p);
                  k=k+2;

                        }
f=a;
}

printf("\n");

return 0;
выводит только
3 5 7 9.
Как можно это реализовать используя только цикл из while?
Изучаю С самостоятельно поэтому прошу не судить строго
stomp вне форума Ответить с цитированием
Старый 01.05.2009, 20:53   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>

int main()
{
int M,N,kstb,kstr,start;
int i,j;

printf("Vvedite kolichestvo strok: ");
scanf("%d",&M);
printf("Vvedite kolichestvo stolbcov: ");
scanf("%d",&N);
printf("Vvedite prirashenie po stolbcam: ");
scanf("%d",&kstb);
printf("Vvedite prirashenie po strokam: ");
scanf("%d",&kstr);
printf("Vvedite nachalnoe znachenie: ");
scanf("%d",&start);

printf("\n");
printf("   A   ");
for(j=1; j<N; j++)
 printf("  A+%d  ",j*kstb);

for(i=0; i<M; i++)
 {
  printf("\n");
  for(j=0; j<N; j++)
    printf("%5d  ",start+j*kstb);
  start += kstr;
 }

getch();
return 0;
}
Для вашего примера:
Код:
A A+2 A+4 A+6
3 5 7 9
6 8 10 12
9 11 13 15
12 14 16 18
15 17 19 21
введите:
Код:
5
4
2
3
3
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 01.05.2009, 20:58   #3
stomp
 
Регистрация: 01.05.2009
Сообщений: 3
По умолчанию

Sazary спасибо! Попробую на вашем примере разобраться . Учу по книжке самостоятельно и типа for еще не проходили
stomp вне форума Ответить с цитированием
Старый 01.05.2009, 21:08   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
и типа for еще не проходили
Это не тип, а цикл. Если вы дошли до while, то вам не долго осталось.

Но если очень нужно, то цикл for в виде
Код:
for(i=0; i<N; i++)
 {
 //действия
 }
можно заменить на
Код:
i = 0;
while (i<N)
 {
 //действия
 i++;
 }
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.05.2009, 04:00   #5
stomp
 
Регистрация: 01.05.2009
Сообщений: 3
По умолчанию

Вот так вот решил
Код:
 #include <stdio.h>
  2 main ()
  3    {
  4         int i,j,n=6,a=3;
  5         i=0;
  6 
  7    while (i<=6) {
  8         if (i == 0)
  9            printf("A\t");
 10         else {
 11            printf("A+%d\t",i+2);
 12 
 13                 }
 14                 i +=2;
 15         }
 16 printf("\n");
 17 i=0;
 18    while (i < 5) {
 19         j=0;
 20                 while (j <= n ){
 21                         printf("%d\t",a+j);
 22                         j +=2;
 23                         }
 24                 a +=3;
 25                 i++;
 26                 printf("\n");
 27         }
 28 
 29 
 30 printf("\n");
 31 return 0;
stomp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простая задачка на access Olya90 Помощь студентам 2 14.04.2009 19:40
Простая задачка про дефис Кси Помощь студентам 0 06.04.2009 16:32
простая задачка, а не могу разобраться Dimanduc Паскаль, Turbo Pascal, PascalABC.NET 4 02.03.2009 15:06
Простая задачка Dukalis Общие вопросы C/C++ 1 13.01.2008 18:10