|
[ SAFF @ 07.06.2006. 16:50 ] @
| 1) kreirati matricu i prevesti u jednodimenzionalni niz....
2) da se kreira niz b u kome ce biti sadrzani elementi koji su veci od srednje vrednosti matrice...
3) neparne elemente u matrici zameniti nulom
4) uneti string i proveriti da li je sadrzan u drugom unetom stringu
1) kreirati matricu i prevesti u jednodimenzionalni niz...
Code: do{
printf("\nUnesi broj kolona matrice: ");
scanf("%d",&n);
printf("\nUnesi broj redova matrice: ");
scanf("%d",&m);
}while ((n<0 || n>max) && (n<0 || n>max));
printf("\n\tUnesite elemente matrice: \n");
for (i=0;i<n;i++)
for (j=0;j<m;j++)
scanf("%d",&A[i][j]);
printf("Uneta matrica je:\n");
for(i=0;i<n;i++) {
for(j=0;j<m;j++)
printf("%d ",A[i][j]);
printf("\n"); }
for(i=0;i<n;i++)
{
for (j=0;j<m;j++)
B[i]=A[i][j]; }
printf("Novoformirani niz A od elemenata matrice je: ");
for (i=0;i<m*n;i++)
printf("%d",B[i]);
Imam problem u ovom jer mi ispisuje nulu na poziciju poslednjeg elementa...
a za ostalo pomagajte...
|
[ Igor Gajic @ 07.06.2006. 19:35 ] @
Resenje za prve tri tacke.
Code:
#include "stdafx.h";
int _tmain(int argc, _TCHAR* argv[])
{
int A[10][10];
int B[100]; //niz <-- matrica
int b[100]; //niz sa vrednostima vecim od srednje
int n,m,i,j,max=10;
int sredvred=0;
do{
printf("\nUnesi broj kolona matrice: ");
scanf_s("%d",&n);
printf("\nUnesi broj redova matrice: ");
scanf_s("%d",&m);
}while ((n<0 || n>max) && (n<0 || n>max));
printf("\n\tUnesite elemente matrice: \n");
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
scanf_s("%d",&A[i][j]);
sredvred+=A[i][j]; //stedis jednu petlju, odmah ih sabiras!
}
sredvred/=(n*m);
printf("Uneta matrica je:\n");
for(i=0;i<n;i++) {
for(j=0;j<m;j++)
printf("%d ",A[i][j]);
printf("\n"); }
// pretvaranje matrice u niz
for(i=0;i<n;i++)
{
for (j=0;j<m;j++)
B[i*n+j]=A[i][j]; } //<------- Greska u tvom kodu, pogledaj index niza B
// niz sa elementima vecim od srednje vrednosti
int brojac=0;
for(i=0;i<n;i++)
{
for (j=0;j<m;j++)
if(A[i][j]>sredvred)
b[brojac++]=A[i][j]; }
//Zamena neparnih elemenata sa nulama
for(i=0;i<n;i++)
{
for (j=0;j<m;j++)
if(A[i][j]%2) A[i][j]=0; }
printf("Novoformirani niz B od elemenata matrice je: ");
for (i=0;i<m*n;i++)
printf("%d",B[i]);
printf("Novoformirani niz b od elemenata matrice je: ");
for (i=0;i<brojac;i++)
printf("%d",b[i]);
printf("Novoformirana matrica je: ");
for(i=0;i<n;i++)
{
for (j=0;j<m;j++)
printf("%d",A[i][j]);
}
printf("\n");
return 0;
}
Pozdrav
[ Igor Gajic @ 07.06.2006. 20:08 ] @
i pod 4.
Najjednostavniji algoritam za nalazenje podstringa.
Pretrazujes prvi string karakter po karakter polazeci od nultog indexa. Zatim povecas index
za jedan i opet pretrazujes. I sve tako dok ne nadjes string ili dok ne dodjes do indeksa duz1-duz2
kada nema smisla vise pretrazivati jer je duzina stringa koji treba pretraziti manja od duzine stringa koji se trazi.
Code:
#include "stdafx.h";
int _tmain(int argc, _TCHAR* argv[])
{
char a[100]; //string koji se pretrazuje
char b[100]; //string koji se trazi
int duz1,duz2,i,j;
bool nasao=true;
gets_s(a);
gets_s(b);
duz1=strlen(a);
duz2=strlen(b);
if(duz1<duz2)
{printf("Greska!!");nasao=false;}
else {
for(i=0;i<duz1-duz2;i++)
{
nasao=true;
for(j=0;j<duz2;j++)
if(a[i+j]!=b[j]) nasao=false;
if(nasao) break;
}
}
if (nasao) printf("Podstring postoji na indexu: %d",i);
else printf("Podstring ne postoji!");
return 0;
[ mb_sa @ 07.06.2006. 21:09 ] @
za stavku 4.) ima ugradjena funkcija strstr(), ali on vjeorvano mora napisati algoritam za to, sto je i uradio Igor Gajic ;)
[ SAFF @ 07.06.2006. 22:32 ] @
Ovde imam problem kad se ovo izvrsi dobijam za rezultat nesto sasvim suprotno.
U cemu je problem!
Code:
// pretvaranje matrice u niz
for(i=0;i<n;i++)
{
for (j=0;j<m;j++)
B[i*n+j]=A[i][j]; } //<------- Greska u tvom kodu, pogledaj index niza B
[ Mali Misha @ 08.06.2006. 08:35 ] @
Probaj sa B[i*m+j].
Objašnjenje: i je indeks npr. kolona. Kako se vidi iz koda, za svaku novu vrednost i će biti uneto m a ne n novih elemenata (indeks j ide 0,..,m-1).
[ SAFF @ 11.06.2006. 00:16 ] @
Hvala vam na pomoci resio sam te probleme:]
Sad me interesuje kako da napravim funkciju za sabiranje svih elemenata u nizu...
Code: void sabir(int *suma)
{
int z[max],i;n;
for(i=0;i<n;i++)
suma+=z[i];
}
gde gresim :]]]
[ mb_sa @ 11.06.2006. 10:01 ] @
Tebi tvoja funkcija treba da vrati suma niza, a ti si stavio void (ne vraca nista). Doduse, mogo si i staviti void kao povratni tip, ali bi onda mora sumu ispisivati u tijelu funkcije. Plus, si kao paramter koji predajes stavio sumu, koju treba da dobijes :)
Dakle, ti treba da predas sve članove niza koji ce se sabirati. Ovdje je broj clanova niza konstantan, a ti ako zelis mozes kreirati nizove proizvoljnih velicina, a onda bi i vjerovatno broj clanova niza mora predati kao paramter funkciji saberi.
Code: #include <stdio.h>
#include <conio.h>
#define N 5
int saberi(int niz[]) {
int suma=0;
int i;
for (i=0; i<N; i++)
suma+=niz[i];
return suma;
}
main() {
int i;
int niz[N];
for (i=0; i<N; i++) {
printf("Unesi clanove niza. Clan %d", i+1);
scanf("%d", &niz[i]);
}
printf ("Suma=%d", saberi(niz));
getch();
}
Citat: SAFF: Hvala vam na pomoci resio sam te probleme:]
Sad me interesuje kako da napravim funkciju za sabiranje svih elemenata u nizu...
Code: void sabir(int *suma)
{
int z[max],i;n;
for(i=0;i<n;i++)
suma+=z[i];
}
gde gresim :]]]
[Ovu poruku je menjao mb_sa dana 11.06.2006. u 11:28 GMT+1]
[ SAFF @ 11.06.2006. 14:01 ] @
Code: void dovez (char *s1,char *s2)
{
int i,k,n;
n=strlen(s2);
for(i=0;i<k;i++)
s2[n+i]=s1[i];
s2[k+n]=0;
}
void main(void) {
clrscr();
char s[max],s1[max],s2[2*max];
int n,m,i,j,k;
printf("\n Unesite string:");
gets(s);
printf("\n Uneti string je: %s ",s);
k=strlen(s);
printf("\n Duzina stringa je %d",k);
for(i=0;i<k;i++)
*(s1+i)=*(s+i);
s1[k]='\0';
printf("\n Kopirani niz s1-> %s",s1);
printf("\n Unesite elemente stringa s2: ");
gets(s2);
printf("\n Uneti string je:%s",s2);
dovez(s1,s2);
printf("\n Dobijeni string s2 ->%s",s2);
scanf("\n"); }
Evo jednog primera te funkcije ali ipak ne uspevam da shvatim kako da napravim ovo za niz ....
Ova funkcija daje za vrednost 3 stringu vrednost prvog sve dok ne dodje do " " -praznog polja i onda ubacuje drugi string...
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|