Wpis z mikrobloga

Mireczki poszukuję eksperta z C++. Mam kilka/kilkanaście problemów i nie potrafię znaleźć na nie rozwiązania :C

Mam zadanie: "Napisać program który wczytuje napisy aż do 3krotnego wczytania napisu dłuższego od pierwszych dwóch wczytanych napisów. Wydrukować najkrótszy i najdłuższy napis"

Nie mogę używać tablicy. Jak mam to zrobić?

Mam napisane tyle:

string napis1,napis2,napis3;

int dlugosc1,dlugosc2,dlugosc3=0;

cout<<"Wprowadz 2 poczatkowe wyrazy"<
cin>>napis1>>napis2;

dlugosc1=napis1.length();

dlugosc2=napis2.length();

cout<<"Pierwszys wyraz to "<
cout<<"Dlugosc 1 wyrazu: "<
cout<<"Dlugosc 2 wyrazu: "<

I nie mam pojęcia jak zacząć pętle.

#informatyka #programowanie #c++ #pomocy
  • 29
@Vatras14: czytaj napis3 w dwóch miejscach programu - raz przed pętlą (jako pierwsze wczytanie) i raz jako ostatnią komendę wewnątrz pętli (jako wszystkie pozostałe wczytania)
@Vatras14: ja c++ bezpośrednio nie pomogę, ale nie zabrałeś się do tego od dupy strony? Po pierwsze musisz pamiętać tylko najkrótszy wpisany tekst. ja w php zrobiłbym to tak, przepisz sobie:

while((strlen($nowypisanywyraz)>$dlugosc1)&&(strlen($nowypisanywyraz)>$dlugosc2)&&($i<3)){

$i++;

}

$najdluszywyraz = $nowypisanywyraz;

i teraz pytanie, najkrotszy wpisany w ogóle wyraz, czy nakrótszy i najdluzszy z 3, ktore masz na koncu
@ania777: @lasic01: @Szarlejowiec:

Doszedłem do momentu że drukuje mi długość najkrótszego i długość najdłuższego. Jak zrobić to, żeby drukował mi te wyrazy? Kod jaki napisałęm:

int main()

{

string napis1,napis2,napis3,napis4,napis5;

int dlugosc1,dlugosc2,dlugosc3=0,dlugosc4=0,dlugosc5=0,min,max;

cout<<"Wprowadz wyrazy"<
cin>>napis1>>napis2;

dlugosc1=napis1.length();

dlugosc2=napis2.length();

if(dlugosc1>dlugosc2)

min=dlugosc2;

else

min=dlugosc1;

do

{

cin>>napis3>>napis4>>napis5;

dlugosc3=napis3.length();

dlugosc4=napis4.length();

dlugosc5=napis5.length();

if(dlugosc3>dlugosc4)

max=dlugosc3;

else

if(dlugosc3>dlugosc5)

max=dlugosc3;

else

if(dlugosc4>dlugosc5)

max=dlugosc4;

else

max=dlugosc5;

}

while(dlugosc3
{

cout<<"Najkrotszy ma dlugosc: "<
cout<<"Najdluzszy wyraz ma dlugosc: "<
@Vatras14: W tym samym miejscu gdzie podstawiasz jakąś konkretną długość pod max podstaw odpowiadający jej napis pod stringa z wynikiem.

Dwie uwagi:

1. A co jeśli te 3 stringi dłuższe niż początkowe 2 nie będą bezpośrednio po sobie?

2. W tym co napisałeś, jeśli masz dlugosc5>dlugosc3>dlugosc4 to jako max uznasz dlugosc3

Spojler się robi
Początkujący z reguły nie potrafi przekazać wiedzy i gruntownie sprawdzić postępów.


@Vatras14: To jest fakt, ale ƶeby zwać się ekspertem to trzeba naprawdę duƶo umieć i wątpię, aby tacy na wykopku przebywali (skoro sam Bjarne daje sobie 7/10 ze znajomości cpp) ;)
@sylwke3100: Napisał tablic ;) Wektor by był dyskusyjny, lista imho nie, ale jeśli to taki problem to łatwo podmienić na multiset, który ma drzewiastą strukturę.

@Vatras14 ;) Jak z tą listą? Moƶe być? Czy miałeś na myśli "nie wolno uƶywać mi kontenerów" :p
@KrzaQ2: To jest początek C++ na uczelni nie było żadnych wektorów czy list. Mam to zrobić tak żeby działało. Mam do wykorzystania: Pętle ( while, for, do while), Warunek if. I to w sumie tyle D:
@sylwke3100: Zdaję sobie sprawę z poziomu nauczania, ale imo nieakceptowalne jest uczenie ludzi wymyślania koła na nowo. Nauka później typu "zaimplementuj sam, ƶebyś wiedział jak działa" - jak najbardziej. Ale jak się pierw nauczą pisania takiego kodu to nic dobrego z tego nie będzie.
@Vatras14: mój przykłąd się skompiluje.

Anyway, nie chce mi się pisać kodu z tak bezsensownymi ograniczeniami ;)

W skrócie algorym powinien wyglądać tak (na przykładzie mojego kodu):

1) pobierasz pierwsze 2

2) wybierasz długość dłuƶszego i zapamiętujesz jako

minimum
3) z tych 2 ustalasz początkowe wartości

shortest
i

longest
4) pobierasz kolejne dwa stringi, zapamiętujesz kolejność ich pobrania, po kaƶdym pobraniu sprawdzasz czy trzeba podmienić

shortest
i

longest
5) dopóki co