Ĺadny brzuch
Witam!
Otoz chce mam wypelnic wektor podanymi liczbami a nastepnie przypisac do nowego
wyraz dodatnie pomnożone przez swoj indeks (tab[i]*i)
dla mnie to cos takiego..
jednak liczby nie sa mnozone (wystepuje bład ze zamiast konkretnej cyfry pojawia się -857473)
konieczna petla while w drugiej czesci
#include<stdio.h> int main() { const int MAX=20; int tab[MAX]; int tab2[MAX]; int i,j,n; printf("Podaj rozmiar tablicy: "); scanf("%d",&n); for (i=0;i<n;i++) { printf("Podaj x[%d] wyraz tablicy: ",i); scanf("%d",&tab[i]); } /* for (i=0;i<n;i++) printf("%d ",tab[i]); */ while(tab[i]>0) { for(i=0;i<n;i++) tab2[j]+=tab[i]*i; } for (j=0;j<n;j++) printf("%d ",tab2[j]); return 0; }
Użytkownik Crisu edytował ten post 18 maj 2005, 18:10
Napisz co dokladnie ma robic program.
1. Wpisuje do tab[i] ilosc elementów n
2. Wybieram liczby wpisane wieksze od zera i mnoże je przez ich indeks tab[i]*i
3. Wyswietlam liczby wymnożone
#include <iostream> #include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { const int MAX=20; int tab[MAX]; int tab2[MAX]; int i,j,n; printf("Podaj rozmiar tablicy: "); scanf("%d",&n); for (i=0;i<n;i++) { printf("Podaj x[%d] wyraz tablicy: ",i); scanf("%d",&tab[i]); } for(i=0;i<n;i++) { tab2[i]=tab[i]*i; // tu byl blad tab2[j] ???? jakie j ????? BŁĄD } for (j=0;j<n;j++) { printf("%d ",tab2[j]); } system("PAUSE"); return 0; }
prosze
#include <iostream> #include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { const int MAX=20; int tab[MAX]; int tab2[MAX]; int i,j,n,nowaTablica; nowaTablica=0; printf("Podaj rozmiar tablicy: "); scanf("%d",&n); for (i=0;i<n;i++) { printf("Podaj x[%d] wyraz tablicy: ",i); scanf("%d",&tab[i]); } for(i=0;i<n;i++) { if(tab[i]>0) { tab2[nowaTablica]=tab[i]*i; // jak wieksze od zera to działasz :) nowaTablica++; } } cout<<nowaTablica<<endl; // tak dla sprawdzenia ile bylo dobrych for (j=0;j<nowaTablica;j++) { printf("%d ",tab2[j]); } system("PAUSE"); return 0; }
#include <iostream> using namespace std; int main (void) { cout << "Podaj rozmiar tablicy: "; int n; cin >> n; int *tab; tab = new int[n]; for (unsigned int i = 0; i<n;i++) { cout << "tab[" << i << "]="; cin >> tab[i]; } for (unsigned int i = 0; i<n; i++) { tab[i]=tab[i]*i; } cout << "Po przemnozeniu: " << endl; for (unsigned int i = 0; i<n; i++) { cout << "tab[" << i << "]=" << tab[i] << endl; } delete [] tab; return 0; }
Sorry, nie odswiezylem strony :)
Użytkownik teS edytował ten post 18 maj 2005, 18:58
thx
Tylko teraz czy ktos moglbys zaproponowac jak za pomocą petli while wybrac z tego wektora liczby wieksze od zera i je wymnozyc przez indeks?
I czemu nie moze byc w zaznaczonym jako blad miejscu tab2[j]? Przeciez liczby przypisujemy do nowego wektora?
W kolejnej petli while() znajdowane sa liczby wieksze od zera i po pomnozeniu przez indeks wyswietlace w postaci i,x[i], x[i]*i
tak dokladnie brzmi tresc:P
Użytkownik Crisu edytował ten post 18 maj 2005, 19:09
Tylko teraz czy ktos moglbys zaproponowac jak za pomocą petli while wybrac z tego wektora liczby wieksze od zera i je wymnozyc przez indeks?
a tu to co ja napisałem ??? czy tylko do while się ograniczasz ?? nie można sobie ułatwić życia inna instrukcją ??
for(i=0;i<n;i++) { if(tab[i]>0) { tab2[nowaTablica]=tab[i]*i; // jak wieksze od zera to działasz :) nowaTablica++; } }
I czemu nie moze byc w zaznaczonym jako blad miejscu tab2[j]? Przeciez liczby przypisujemy do nowego wektora?
A nadałeś wartość początkową dla j ??????? chyba nie!!!! prawda ?? :)
W kolejnej petli while() znajdowane sa liczby wieksze od zera i po pomnozeniu przez indeks wyswietlace w postaci i,x[i], x[i]*i
tak dokladnie brzmi tresc:P
obudziłeś się w pore - no tak spiący książe :rolleyes:
ok, nie rozumiem tylko jednej rzeczy:)
Wiec tak czemu wprowadzamy rozmiar "nowatablica" a przy wypisywaniu odwołujemy się do "j" ?
Eh.. bo tu jest błąd ;)
tzn. powinno być chyba:
for(i=0;i<n;i++)
{
if(tab[i]>0)
{
tab2[i]=tab[i]*i; // jak wieksze od zera to działasz :)
nowaTablica++;
}
}
Tak BTW. zastanawiam się czy napisać coś n/t co to jest wektor, czym się różni od tablicy, i dlaczego zamiast powyższej pętli użyć std::accumulate ;)
Eh.. bo tu jest błąd ;)
tzn. powinno być chyba:
for(i=0;i<n;i++)
{
if(tab[i]>0)
 {
 tab2[i]=tab[i]*i;     // jak wieksze od zera to działasz :)
 nowaTablica++;
 }
}
Tak BTW. zastanawiam się czy napisać coś n/t co to jest wektor, czym się różni od tablicy, i dlaczego zamiast powyższej pętli użyć std::accumulate ;)
ok, nie rozumiem tylko jednej rzeczy:)
Wiec tak czemu wprowadzamy rozmiar "nowatablica" a przy wypisywaniu odwołujemy się do "j" ?
Ok teraz to probuje wypisac w nastepujacej postaci
i= x[i]= x[i]*i=
Wszyskto ladnie dopoki nie wpisze wartosci ujemnych:/
Sorki, za glupie pytania ale jak widac dopiero zaczynam:)
pozdro
#include<stdio.h> int main() { const int MAX=20; int tab[MAX]; int tab2[MAX]; int i=0,j=0,n; printf("Podaj rozmiar tablicy: "); scanf("%d",&n); if(n>MAX) { printf("Za duzy wymiar"); } else { for (i=0;i<n;i++) { printf("Podaj x[%d] wyraz tablicy: ",i); scanf("%d",&tab[i]); } int x=0; for(i=0;i<n;i++) { if(tab[i]>0) { tab2[x]=tab[i]*i; x++; } } for (j=0,i=0;i<n,j<x;i++,j++) { printf("i=%d x[i]=%d x[i]*i=%d \n",i,tab[i],tab2[j]); } } return 0; }
Użytkownik Crisu edytował ten post 18 maj 2005, 20:03
A no racja; pisałem to nie bardzo czytając resztę kodu; sry ;)
jest tam nowaTablica++;
Niech to będzie dla wszystkich nauczka - nie pisać postów bez zrozumienia tematu ;)
A z tym nawykiem do std:: to chodzi Ci o nawyk korzystania z STL, czy o samo pisanie 'std::' zamiast using namespace std;? Bo jeśli o te drugie - to cóż, po to mamy namespace'y, żeby z nich korzystać, a nie ograbiać się z ochrony przed konfliktami nazw. Poza tym lubię zapis z std::, kwestia czysto subiektywna ^^
Ok teraz to probuje wypisac w nastepujacej postaci
i= x[i]= x[i]*i=
Wszyskto ladnie dopoki nie wpisze wartosci ujemnych:/
U mnie działa wszystko dobrze! Napisz dokładniej w czym problem, to postaram się pomóc. Bo tak to nawet nie wiem o co Ci chodzi.
A z tym nawykiem do std:: (...)
Poprostu zaciekawiła mnie składnia :) Teraz już obczajam o co chodzi
W momencie gdy program trafi na wyraz ujemny, to w miejscu x[i]*i dostaje wynik nie wiadomo skąd ( i=3 x[i]=-4 i*x[i]=20???) i program przerywa działanie lub następne liczby są już mnożone nie poprawnie
jeszcze raz zapodam moje wyświetlanie:)
for (j=0,i=0;i<n,j<x;i++,j++) { printf("i=%d x[i]=%d x[i]*i=%d \n",i,tab[i],tab2[j]); }
Użytkownik Crisu edytował ten post 18 maj 2005, 20:42
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Otoz chce mam wypelnic wektor podanymi liczbami a nastepnie przypisac do nowego
wyraz dodatnie pomnożone przez swoj indeks (tab[i]*i)
dla mnie to cos takiego..
jednak liczby nie sa mnozone (wystepuje bład ze zamiast konkretnej cyfry pojawia się -857473)
konieczna petla while w drugiej czesci
#include<stdio.h> int main() { const int MAX=20; int tab[MAX]; int tab2[MAX]; int i,j,n; printf("Podaj rozmiar tablicy: "); scanf("%d",&n); for (i=0;i<n;i++) { printf("Podaj x[%d] wyraz tablicy: ",i); scanf("%d",&tab[i]); } /* for (i=0;i<n;i++) printf("%d ",tab[i]); */ while(tab[i]>0) { for(i=0;i<n;i++) tab2[j]+=tab[i]*i; } for (j=0;j<n;j++) printf("%d ",tab2[j]); return 0; }
Użytkownik Crisu edytował ten post 18 maj 2005, 18:10
Napisz co dokladnie ma robic program.
1. Wpisuje do tab[i] ilosc elementów n
2. Wybieram liczby wpisane wieksze od zera i mnoże je przez ich indeks tab[i]*i
3. Wyswietlam liczby wymnożone
#include <iostream> #include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { const int MAX=20; int tab[MAX]; int tab2[MAX]; int i,j,n; printf("Podaj rozmiar tablicy: "); scanf("%d",&n); for (i=0;i<n;i++) { printf("Podaj x[%d] wyraz tablicy: ",i); scanf("%d",&tab[i]); } for(i=0;i<n;i++) { tab2[i]=tab[i]*i; // tu byl blad tab2[j] ???? jakie j ????? BŁĄD } for (j=0;j<n;j++) { printf("%d ",tab2[j]); } system("PAUSE"); return 0; }
prosze
#include <iostream> #include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { const int MAX=20; int tab[MAX]; int tab2[MAX]; int i,j,n,nowaTablica; nowaTablica=0; printf("Podaj rozmiar tablicy: "); scanf("%d",&n); for (i=0;i<n;i++) { printf("Podaj x[%d] wyraz tablicy: ",i); scanf("%d",&tab[i]); } for(i=0;i<n;i++) { if(tab[i]>0) { tab2[nowaTablica]=tab[i]*i; // jak wieksze od zera to działasz :) nowaTablica++; } } cout<<nowaTablica<<endl; // tak dla sprawdzenia ile bylo dobrych for (j=0;j<nowaTablica;j++) { printf("%d ",tab2[j]); } system("PAUSE"); return 0; }
#include <iostream> using namespace std; int main (void) { cout << "Podaj rozmiar tablicy: "; int n; cin >> n; int *tab; tab = new int[n]; for (unsigned int i = 0; i<n;i++) { cout << "tab[" << i << "]="; cin >> tab[i]; } for (unsigned int i = 0; i<n; i++) { tab[i]=tab[i]*i; } cout << "Po przemnozeniu: " << endl; for (unsigned int i = 0; i<n; i++) { cout << "tab[" << i << "]=" << tab[i] << endl; } delete [] tab; return 0; }
Sorry, nie odswiezylem strony :)
Użytkownik teS edytował ten post 18 maj 2005, 18:58
thx
Tylko teraz czy ktos moglbys zaproponowac jak za pomocą petli while wybrac z tego wektora liczby wieksze od zera i je wymnozyc przez indeks?
I czemu nie moze byc w zaznaczonym jako blad miejscu tab2[j]? Przeciez liczby przypisujemy do nowego wektora?
W kolejnej petli while() znajdowane sa liczby wieksze od zera i po pomnozeniu przez indeks wyswietlace w postaci i,x[i], x[i]*i
tak dokladnie brzmi tresc:P
Użytkownik Crisu edytował ten post 18 maj 2005, 19:09
Tylko teraz czy ktos moglbys zaproponowac jak za pomocą petli while wybrac z tego wektora liczby wieksze od zera i je wymnozyc przez indeks?
a tu to co ja napisałem ??? czy tylko do while się ograniczasz ?? nie można sobie ułatwić życia inna instrukcją ??
for(i=0;i<n;i++) { if(tab[i]>0) { tab2[nowaTablica]=tab[i]*i; // jak wieksze od zera to działasz :) nowaTablica++; } }
I czemu nie moze byc w zaznaczonym jako blad miejscu tab2[j]? Przeciez liczby przypisujemy do nowego wektora?
A nadałeś wartość początkową dla j ??????? chyba nie!!!! prawda ?? :)
W kolejnej petli while() znajdowane sa liczby wieksze od zera i po pomnozeniu przez indeks wyswietlace w postaci i,x[i], x[i]*i
tak dokladnie brzmi tresc:P
obudziłeś się w pore - no tak spiący książe :rolleyes:
ok, nie rozumiem tylko jednej rzeczy:)
Wiec tak czemu wprowadzamy rozmiar "nowatablica" a przy wypisywaniu odwołujemy się do "j" ?
Eh.. bo tu jest błąd ;)
tzn. powinno być chyba:
for(i=0;i<n;i++)
{
if(tab[i]>0)
{
tab2[i]=tab[i]*i; // jak wieksze od zera to działasz :)
nowaTablica++;
}
}
Tak BTW. zastanawiam się czy napisać coś n/t co to jest wektor, czym się różni od tablicy, i dlaczego zamiast powyższej pętli użyć std::accumulate ;)
Eh.. bo tu jest błąd ;)
tzn. powinno być chyba:
for(i=0;i<n;i++)
{
if(tab[i]>0)
 {
 tab2[i]=tab[i]*i;     // jak wieksze od zera to działasz :)
 nowaTablica++;
 }
}
Tak BTW. zastanawiam się czy napisać coś n/t co to jest wektor, czym się różni od tablicy, i dlaczego zamiast powyższej pętli użyć std::accumulate ;)

ok, nie rozumiem tylko jednej rzeczy:)
Wiec tak czemu wprowadzamy rozmiar "nowatablica" a przy wypisywaniu odwołujemy się do "j" ?

Ok teraz to probuje wypisac w nastepujacej postaci
i= x[i]= x[i]*i=
Wszyskto ladnie dopoki nie wpisze wartosci ujemnych:/
Sorki, za glupie pytania ale jak widac dopiero zaczynam:)
pozdro
#include<stdio.h> int main() { const int MAX=20; int tab[MAX]; int tab2[MAX]; int i=0,j=0,n; printf("Podaj rozmiar tablicy: "); scanf("%d",&n); if(n>MAX) { printf("Za duzy wymiar"); } else { for (i=0;i<n;i++) { printf("Podaj x[%d] wyraz tablicy: ",i); scanf("%d",&tab[i]); } int x=0; for(i=0;i<n;i++) { if(tab[i]>0) { tab2[x]=tab[i]*i; x++; } } for (j=0,i=0;i<n,j<x;i++,j++) { printf("i=%d x[i]=%d x[i]*i=%d \n",i,tab[i],tab2[j]); } } return 0; }
Użytkownik Crisu edytował ten post 18 maj 2005, 20:03
A no racja; pisałem to nie bardzo czytając resztę kodu; sry ;)
jest tam nowaTablica++;
Niech to będzie dla wszystkich nauczka - nie pisać postów bez zrozumienia tematu ;)
A z tym nawykiem do std:: to chodzi Ci o nawyk korzystania z STL, czy o samo pisanie 'std::' zamiast using namespace std;? Bo jeśli o te drugie - to cóż, po to mamy namespace'y, żeby z nich korzystać, a nie ograbiać się z ochrony przed konfliktami nazw. Poza tym lubię zapis z std::, kwestia czysto subiektywna ^^
Ok teraz to probuje wypisac w nastepujacej postaci
i= x[i]= x[i]*i=
Wszyskto ladnie dopoki nie wpisze wartosci ujemnych:/
U mnie działa wszystko dobrze! Napisz dokładniej w czym problem, to postaram się pomóc. Bo tak to nawet nie wiem o co Ci chodzi.
A z tym nawykiem do std:: (...)
Poprostu zaciekawiła mnie składnia :) Teraz już obczajam o co chodzi
W momencie gdy program trafi na wyraz ujemny, to w miejscu x[i]*i dostaje wynik nie wiadomo skąd ( i=3 x[i]=-4 i*x[i]=20???) i program przerywa działanie lub następne liczby są już mnożone nie poprawnie
jeszcze raz zapodam moje wyświetlanie:)
for (j=0,i=0;i<n,j<x;i++,j++) { printf("i=%d x[i]=%d x[i]*i=%d \n",i,tab[i],tab2[j]); }
Użytkownik Crisu edytował ten post 18 maj 2005, 20:42