• Важно
    Имате проблем со најава или регистрација на it.mk?
    Побарајте го решението на вашиот проблем ТУКА!

Zadaca vo c

ufs

Intern
5 ноември 2011
17
0
Da se izvrsi ciklicno pomestuvanje na bukvite vo nekoj zbor vnesen preku tastatura za n (ovoj broj e vnesen preku tastatura) mesta nalevo ili nadesno (ovoj izbor se vnesuva preku tastatura).!

Iam nesto napisano ama za zal ne funkcionira nekako :(

Код:
#include <stdio.h>
#include <stdlib.h>
 
 
int dolzina(char string[]);
int main(int argc, char *argv[])
{
int dolzina(char string[]);
int n,k,a;
int i,t;
int temp;
char zbor[1000];
char izbor;
 
printf("Vnesete go zborot:");
scanf("%s", &zbor);
k=dolzina(zbor);
printf("\nVnesete za kolku mesta da se pomestat bukvite vo zborot %s:\n",zbor);
scanf("%d",&n);
printf("Dali sakate da se pomestat levo ili desno:\n");
scanf("%c",&izbor);
 
switch(izbor)
{
 
case'l':
{
 k=dolzina(zbor);
for (t=1;t>=n;t++)
{
temp = zbor[k-1];
for (i=k-1;i>=0;i--)
{
zbor[i]=zbor[i-1];
}
zbor[0]=temp;
}
printf("Noviot zbor e: %s",zbor);
break;
}
 
 
case'd': 
for (t=1; t<=n;t++)
{
temp = zbor[k-1]; 
for (i=k-1; i!=0; i--)
{
zbor[i]=zbor[i-1];
 
zbor[0]=temp;
}
printf("Noviot zbor e: %s\n",zbor);
break; 
}
default:
printf("Vnesete levo ili desno!\n");
}
 
 
 
system("PAUSE");
return 0;
}
int dolzina(char zbor[]){
    int dolzina=0;
    int i=0;
    while(zbor[i]!='\0'){
                          i++;
                          dolzina;
                          }
                          return dolzina;
                          }
 

Branchez

Intern
3 февруари 2011
52
15
int dolzina(char zbor[]){
int dolzina=0;
int i=0;
while(zbor!='\0'){
i++;
dolzina;
}
return dolzina;
}

Во фунцијата dolzina не ја инцрементираш вредноста на променливата dolzina.


int dolzina(char zbor[]){
int dolzina=0;
int i=0;
while(zbor!='\0'){
i++;
dolzina++;
}
return dolzina;
}


Друга опција е да не користиш променлива dolzina туку да ја вратиш вредноста на i (return i).
 

ufs

Intern
5 ноември 2011
17
0
Probav i taka i taka,
nego problemot e sto koga ke izberam l za levo ili d za desno prekinuva, se pojavuva default od switch "Vnesete levo ili desno!", t.e. ne se izvrsuva switch-ot
Код:
#include <stdio.h>
#include <stdlib.h>
 
 
int dolzina(char string[]);
int main(int argc, char *argv[])
{
 
int n,k,a;
int i,t;
int temp;
char zbor[1000];
char izbor;
 
printf("Vnesete go zborot:");
scanf("%s", &zbor);
k=dolzina(zbor);
printf("\nVnesete za kolku mesta da se pomestat bukvite vo zborot %s:\n",zbor);
scanf("%d",&n);
printf("Dali sakate da se pomestat levo ili desno:\n");
scanf("%c",&izbor);
 
 
switch(izbor)
{
 
case'l':
{
k=dolzina(zbor);
for (t=1;t>=n;t++)
{
temp = zbor[k-1];
for (i=k-1;i>=0;i--)
{
zbor[i]=zbor[i-1];
}
zbor[0]=temp;
}
printf("Noviot zbor e: %s",zbor);
break;
}
 
 
case'd':
for (t=1; t<=n;t++)
{
temp = zbor[k-1];
for (i=k-1; i!=0; i--)
{
zbor[i]=zbor[i-1];
 
zbor[0]=temp;
}
printf("Noviot zbor e: %s\n",zbor);
break;
}
default:
printf("Vnesete levo ili desno!\n");
}
 
 
 
system("PAUSE");
return 0;
}
int dolzina(char zbor[]){
    int dolzina=0;
    int i=0;
    while(zbor[i]!='\0'){
                          i++;
                          dolzina++;
                          }
                          return dolzina;
                          }
 

Branchez

Intern
3 февруари 2011
52
15
Пробај да го дефинираш izbor како char izbor[1], и после ќе имаш

printf("Dali sakate da se pomestat levo ili desno:\n");
scanf("%s",&izbor);

Исто приметив дека ти фали } во циклусот во вториот case.

BTW, кај мене и со овие промени не фунционираше замената, те ми го враќа внесениот збор непроменет.
 

Trooper

Intern
24 февруари 2010
15
5
Probav i taka i taka,
nego problemot e sto koga ke izberam l za levo ili d za desno prekinuva, se pojavuva default od switch "Vnesete levo ili desno!", t.e. ne se izvrsuva switch-ot
Код:
#include <stdio.h>
#include <stdlib.h>
 
 
int dolzina(char string[]);
int main(int argc, char *argv[])
{
 
int n,k,a;
int i,t;
int temp;
char zbor[1000];
char izbor;
 
printf("Vnesete go zborot:");
scanf("%s", &zbor);
k=dolzina(zbor);
printf("\nVnesete za kolku mesta da se pomestat bukvite vo zborot %s:\n",zbor);
scanf("%d",&n);
printf("Dali sakate da se pomestat levo ili desno:\n");
scanf("%c",&izbor);
 
 
switch(izbor)
{
 
case'l':
{
k=dolzina(zbor);
for (t=1;t>=n;t++)
{
temp = zbor[k-1];
for (i=k-1;i>=0;i--)
{
zbor[i]=zbor[i-1];
}
zbor[0]=temp;
}
printf("Noviot zbor e: %s",zbor);
break;
}
 
 
case'd':
for (t=1; t<=n;t++)
{
temp = zbor[k-1];
for (i=k-1; i!=0; i--)
{
zbor[i]=zbor[i-1];
 
zbor[0]=temp;
}
printf("Noviot zbor e: %s\n",zbor);
break;
}
default:
printf("Vnesete levo ili desno!\n");
}
 
 
 
system("PAUSE");
return 0;
}
int dolzina(char zbor[]){
    int dolzina=0;
    int i=0;
    while(zbor[i]!='\0'){
                          i++;
                          dolzina++;
                          }
                          return dolzina;
                          }

Пробај со овој модифициран код:
Код:
#include <stdio.h>
#include <stdlib.h>
 
 
int dolzina(char string[]);
int main(int argc, char *argv[])
{
 
int n,k,a;
int i,t;
int temp;
char zbor[1000];
char izbor;
 
printf("Vnesete go zborot:");
scanf("%s", &zbor);
k=dolzina(zbor);
printf("\nVnesete za kolku mesta da se pomestat bukvite vo zborot %s:\n",zbor);
scanf("%d",&n);
getchar();
printf("Dali sakate da se pomestat levo ili desno:\n");
scanf("%c",&izbor);
 
 
switch(izbor)
{
 
 case'l':
 {
        //k=dolzina(zbor);
        for (t=1; t<=n;t++)
         {
             temp = zbor[0];
             for (i=0; i<k-1; i++)
             {
                 zbor[i]=zbor[i+1];
             }
             zbor[k-1]=temp;
             //printf("Noviot zbor e: %s\n",zbor);
         }
        
        //printf("Noviot zbor e: %s",zbor);
        break;
 }
 
 
 case'd':
         for (t=1;t<=n;t++)
         {
              temp = zbor[k-1];
              for (i=k-1;i>0;i--)
              {
                  zbor[i]=zbor[i-1];
              }
              zbor[0]=temp;
         }
         break;
         default:
         printf("Vnesete levo ili desno!\n");
}
 
 printf("Noviot zbor e: %s\n",zbor);
 
system("PAUSE");
return 0;
}
int dolzina(char zbor[]){
    int dolzina=0;
    int i=0;
    while(zbor[i]!='\0'){
                          i++;
                          dolzina++;
                          }
                          return dolzina;
                          }
 

ufs

Intern
5 ноември 2011
17
0
Епа друже дужен сум ти пиво :)
Thanks a loooooooooooooot
@Tr00per
Isto taka i tebe Branchez fala ti mnogu za pomosta ;)
 

maria

Intern
10 август 2011
3
0
ke moze li nekoj da mi pomogne vo vrska so zadacava:
dadena e kvadratna matrica A[nxn].da se napise programa za rotacija na matricata A za m mesta.rotacijata se pravi na sleden nacin:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
za m=3
14 15 16 1
2 3 4 5
6 7 8 9
10 11 12 13
fala :)
 

Trooper

Intern
24 февруари 2010
15
5
ke moze li nekoj da mi pomogne vo vrska so zadacava:
dadena e kvadratna matrica A[nxn].da se napise programa za rotacija na matricata A za m mesta.rotacijata se pravi na sleden nacin:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
za m=3
14 15 16 1
2 3 4 5
6 7 8 9
10 11 12 13
fala :)

Повелете, што е нејасно прашај.

Код:
#include <stdio.h>
 
int main()
{
    // Vcituvanje dimenzii na matricata
    int n = 0;
    printf("Dimenzii na matricata >");
    scanf("%d",&n);
   
    // Deklariranje i popolnuvanje na matricata
    int mat[n][n];
    for(int i = 0; i < n; i++)
            for(int j = 0; j < n; j++)
            scanf("%d",&mat[i][j]);
    getchar();
   
    // Vcituvanje na vrednosta za rotiranje
    int m = 0;
    printf("Vrednost za m >");
    scanf("%d",&m);
    getchar();
   
    // Rotiranje na matricata za m pati
    int *p = &mat[0][0];
    for(int i = 0; i < m; i++)
    {
            int temp =  *(p+n*n-1);
            for(int j = n*n -1; j >0;  j--)
                    *(p+j) = *(p+j-1);
            *p= temp;
    }
   
    // Pecatenje na matricata
    for(int i = 0; i < n; i++)
    {
            for(int j = 0; j < n; j++)
                    printf(" %d ", mat[i][j]);
            printf("\n");
    }
    char c;
    scanf("%c",&c);
    return 0;
}
 

maria

Intern
10 август 2011
3
0
Повелете, што е нејасно прашај.

Код:
#include <stdio.h>
 
int main()
{
    // Vcituvanje dimenzii na matricata
    int n = 0;
    printf("Dimenzii na matricata >");
    scanf("%d",&n);
 
    // Deklariranje i popolnuvanje na matricata
    int mat[n][n];
    for(int i = 0; i < n; i++)
            for(int j = 0; j < n; j++)
            scanf("%d",&mat[i][j]);
    getchar();
 
    // Vcituvanje na vrednosta za rotiranje
    int m = 0;
    printf("Vrednost za m >");
    scanf("%d",&m);
    getchar();
 
    // Rotiranje na matricata za m pati
    int *p = &mat[0][0];
    for(int i = 0; i < m; i++)
    {
            int temp =  *(p+n*n-1);
            for(int j = n*n -1; j >0;  j--)
                    *(p+j) = *(p+j-1);
            *p= temp;
    }
 
    // Pecatenje na matricata
    for(int i = 0; i < n; i++)
    {
            for(int j = 0; j < n; j++)
                    printf(" %d ", mat[i][j]);
            printf("\n");
    }
    char c;
    scanf("%c",&c);
    return 0;
}
ti blagodaram :)
ovie pokazuvacive mi se slaba strana :supershock:
 

Нови мислења

Последни Теми

Статистика

Теми
44,156
Мислења
879,152
Членови
30,784
Најнов член
edwardleo
На врв Дно